TimeZoneInfo.ConvertTime Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Convierte una hora a la hora en una zona horaria determinada.
Sobrecargas
ConvertTime(DateTime, TimeZoneInfo) |
Convierte una hora a la hora en una zona horaria determinada. |
ConvertTime(DateTimeOffset, TimeZoneInfo) |
Convierte una hora a la hora en una zona horaria determinada. |
ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) |
Convierte una hora de una zona horaria a otra. |
ConvertTime(DateTime, TimeZoneInfo)
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
Convierte una hora a la hora en una zona horaria determinada.
public:
static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo ^ destinationTimeZone);
public static DateTime ConvertTime (DateTime dateTime, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTime * TimeZoneInfo -> DateTime
Public Shared Function ConvertTime (dateTime As DateTime, destinationTimeZone As TimeZoneInfo) As DateTime
Parámetros
- dateTime
- DateTime
Fecha y hora que se va a convertir.
- destinationTimeZone
- TimeZoneInfo
Zona horaria a la que se va a convertir dateTime
.
Devoluciones
Fecha y hora en la zona horaria de destino.
Excepciones
El valor del parámetro dateTime
representa una hora no válida.
El valor del parámetro destinationTimeZone
es null
.
Ejemplos
En el ejemplo siguiente se convierte una matriz de valores de fecha y hora en horas de la zona horaria oriental de Estados Unidos y Canadá. Muestra que la zona horaria de origen depende de la propiedad DateTime.Kind del valor de DateTime de origen. También se muestra que el método ConvertTime toma en cuenta los ajustes de zona horaria, ya que se produce un ajuste de zona horaria en las zonas horarias de origen y destino a las 2:00 A.M. el 7 de noviembre de 2010.
using System;
public class Example
{
public static void Main()
{
// Define times to be converted.
DateTime[] times = { new DateTime(2010, 1, 1, 0, 1, 0),
new DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Utc),
new DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Local),
new DateTime(2010, 11, 6, 23, 30, 0),
new DateTime(2010, 11, 7, 2, 30, 0) };
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
TimeZoneInfo est;
try {
est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
}
catch (TimeZoneNotFoundException) {
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
return;
}
catch (InvalidTimeZoneException) {
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
return;
}
// Display the current time zone name.
Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName);
// Convert each time in the array.
foreach (DateTime timeToConvert in times)
{
DateTime targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
Console.WriteLine("Converted {0} {1} to {2}.", timeToConvert,
timeToConvert.Kind, targetTime);
}
}
}
// The example displays the following output:
// Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//
// Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
// Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
// Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
// Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
// Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.
open System
// Define times to be converted.
let times =
[| DateTime(2010, 1, 1, 0, 1, 0)
DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Utc)
DateTime(2010, 1, 1, 0, 1, 0, DateTimeKind.Local)
DateTime(2010, 11, 6, 23, 30, 0)
DateTime(2010, 11, 7, 2, 30, 0) |]
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
try
let est = TimeZoneInfo.FindSystemTimeZoneById "Eastern Standard Time"
// Display the current time zone name.
printfn $"Local time zone: {TimeZoneInfo.Local.DisplayName}\n"
// Convert each time in the array.
for timeToConvert in times do
let targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est)
printfn $"Converted {timeToConvert} {timeToConvert.Kind} to {targetTime}."
with
| :? TimeZoneNotFoundException ->
printfn "Unable to retrieve the Eastern Standard time zone."
| :? InvalidTimeZoneException ->
printfn "Unable to retrieve the Eastern Standard time zone."
// The example displays the following output:
// Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//
// Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
// Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
// Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
// Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
// Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.
Module Example
Public Sub Main()
' Define times to be converted.
Dim times() As Date = { #1/1/2010 12:01AM#, _
DateTime.SpecifyKind(#1/1/2010 12:01AM#, DateTimeKind.Utc), _
DateTime.SpecifyKind(#1/1/2010 12:01AM#, DateTimeKind.Local), _
#11/6/2010 11:30PM#, #11/7/2010 2:30AM# }
' Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
Dim est As TimeZoneInfo
Try
est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
Catch e As TimeZoneNotFoundException
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
Exit Sub
Catch e As InvalidTimeZoneException
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
Exit Sub
End Try
' Display the current time zone name.
Console.WriteLine("Local time zone: {0}", TimeZoneInfo.Local.DisplayName)
Console.WriteLine()
' Convert each time in the array.
For Each timeToConvert As Date In times
Dim targetTime As Date = TimeZoneInfo.ConvertTime(timeToConvert, est)
Console.WriteLine("Converted {0} {1} to {2}.", timeToConvert, _
timeToConvert.Kind, targetTime)
Next
End Sub
End Module
' The example displays the following output:
' Local time zone: (GMT-08:00) Pacific Time (US & Canada)
'
' Converted 1/1/2010 12:01:00 AM Unspecified to 1/1/2010 3:01:00 AM.
' Converted 1/1/2010 12:01:00 AM Utc to 12/31/2009 7:01:00 PM.
' Converted 1/1/2010 12:01:00 AM Local to 1/1/2010 3:01:00 AM.
' Converted 11/6/2010 11:30:00 PM Unspecified to 11/7/2010 1:30:00 AM.
' Converted 11/7/2010 2:30:00 AM Unspecified to 11/7/2010 5:30:00 AM.
Comentarios
Al realizar la conversión, el método ConvertTime(DateTimeOffset, TimeZoneInfo) aplica las reglas de ajuste en vigor en la zona horaria destinationTimeZone
.
Esta sobrecarga del método ConvertTime(DateTime, TimeZoneInfo) determina la zona horaria de origen del valor de la propiedad Kind del parámetro dateTime
, como se muestra en la tabla siguiente.
Valor de la propiedad Kind | Zona horaria de origen | Comportamiento del método |
---|---|---|
DateTimeKind.Local | Local | Convierte la hora local en la hora en destinationTimeZone . |
DateTimeKind.Utc | Utc | Convierte la hora universal coordinada (UTC) en la hora en destinationTimeZone . |
DateTimeKind.Unspecified | Se supone que es Local. | Convierte la hora local en la hora en destinationTimeZone . |
La propiedad Kind del valor devuelto DateTime se establece como se muestra en la tabla siguiente.
Condición | Valor de propiedad Kind devuelto |
---|---|
El destinationTimeZone es TimeZoneInfo.Utc. |
DateTimeKind.Utc |
El destinationTimeZone es TimeZoneInfo.Local. |
DateTimeKind.Local |
Todos los demás valores de fecha y hora y zonas horarias de destino. | DateTimeKind.Unspecified |
Si el valor del parámetro dateTime
es una hora local ambigua, se interpreta como una hora estándar. Si el parámetro dateTime
es una hora local no válida, este método produce un ArgumentException.
Si la conversión de dateTime
da como resultado un valor de fecha y hora anterior a DateTime.MinValue o posterior a DateTime.MaxValue, este método devuelve DateTime.MinValue o DateTime.MaxValue, respectivamente.
También puede convertir a o desde UTC llamando a los métodos ConvertTimeFromUtc y ConvertTimeToUtc.
Consulte también
Se aplica a
ConvertTime(DateTimeOffset, TimeZoneInfo)
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
Convierte una hora a la hora en una zona horaria determinada.
public:
static DateTimeOffset ConvertTime(DateTimeOffset dateTimeOffset, TimeZoneInfo ^ destinationTimeZone);
public static DateTimeOffset ConvertTime (DateTimeOffset dateTimeOffset, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTimeOffset * TimeZoneInfo -> DateTimeOffset
Public Shared Function ConvertTime (dateTimeOffset As DateTimeOffset, destinationTimeZone As TimeZoneInfo) As DateTimeOffset
Parámetros
- dateTimeOffset
- DateTimeOffset
Fecha y hora que se va a convertir.
- destinationTimeZone
- TimeZoneInfo
Zona horaria a la que se va a convertir dateTimeOffset
.
Devoluciones
Fecha y hora en la zona horaria de destino.
Excepciones
El valor del parámetro destinationTimeZone
es null
.
Ejemplos
En el ejemplo siguiente se convierte una matriz de valores de DateTimeOffset en horas de la zona horaria del Este de EE. UU. y Canadá. Ilustra que el método ConvertTime toma en cuenta los ajustes de zona horaria, ya que se produce un ajuste de zona horaria en las zonas horarias de origen y destino a las 2:00 A.M. el 7 de noviembre de 2010.
using System;
public class Example
{
public static void Main()
{
// Define times to be converted.
DateTime time1 = new DateTime(2010, 1, 1, 12, 1, 0);
DateTime time2 = new DateTime(2010, 11, 6, 23, 30, 0);
DateTimeOffset[] times = { new DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)),
new DateTimeOffset(time1, TimeSpan.Zero),
new DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)),
new DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) };
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
TimeZoneInfo est;
try {
est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
}
catch (TimeZoneNotFoundException) {
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
return;
}
catch (InvalidTimeZoneException) {
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.");
return;
}
// Display the current time zone name.
Console.WriteLine("Local time zone: {0}\n", TimeZoneInfo.Local.DisplayName);
// Convert each time in the array.
foreach (DateTimeOffset timeToConvert in times)
{
DateTimeOffset targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime);
}
}
}
// The example displays the following output:
// Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//
// Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
// Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
// Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
// Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.
open System
// Define times to be converted.
let time1 = DateTime(2010, 1, 1, 12, 1, 0)
let time2 = DateTime(2010, 11, 6, 23, 30, 0)
let times =
[| DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset time1)
DateTimeOffset(time1, TimeSpan.Zero)
DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset time2)
DateTimeOffset(time2.AddHours 3, TimeZoneInfo.Local.GetUtcOffset(time2.AddHours 3)) |]
// Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
try
let est = TimeZoneInfo.FindSystemTimeZoneById "Eastern Standard Time"
// Display the current time zone name.
printfn $"Local time zone: {TimeZoneInfo.Local.DisplayName}\n"
// Convert each time in the array.
for timeToConvert in times do
let targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est)
printfn $"Converted {timeToConvert} to {targetTime}."
with
| :? TimeZoneNotFoundException ->
printfn "Unable to retrieve the Eastern Standard time zone."
| :? InvalidTimeZoneException ->
printfn "Unable to retrieve the Eastern Standard time zone."
// The example displays the following output:
// Local time zone: (GMT-08:00) Pacific Time (US & Canada)
//
// Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
// Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
// Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
// Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.
Module Example
Public Sub Main()
' Define times to be converted.
Dim time1 As Date = #1/1/2010 12:01AM#
Dim time2 As Date = #11/6/2010 11:30PM#
Dim times() As DateTimeOffset = { New DateTimeOffset(time1, TimeZoneInfo.Local.GetUtcOffset(time1)), _
New DateTimeOffset(time1, Timespan.Zero), _
New DateTimeOffset(time2, TimeZoneInfo.Local.GetUtcOffset(time2)), _
New DateTimeOffset(time2.AddHours(3), TimeZoneInfo.Local.GetUtcOffset(time2.AddHours(3))) }
' Retrieve the time zone for Eastern Standard Time (U.S. and Canada).
Dim est As TimeZoneInfo
Try
est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
Catch e As TimeZoneNotFoundException
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
Exit Sub
Catch e As InvalidTimeZoneException
Console.WriteLine("Unable to retrieve the Eastern Standard time zone.")
Exit Sub
End Try
' Display the current time zone name.
Console.WriteLine("Local time zone: {0}", TimeZoneInfo.Local.DisplayName)
Console.WriteLine()
' Convert each time in the array.
For Each timeToConvert As DateTimeOffset In times
Dim targetTime As DateTimeOffset = TimeZoneInfo.ConvertTime(timeToConvert, est)
Console.WriteLine("Converted {0} to {1}.", timeToConvert, targetTime)
Next
End Sub
End Module
' The example displays the following output:
' Local time zone: (GMT-08:00) Pacific Time (US & Canada)
'
' Converted 1/1/2010 12:01:00 AM -08:00 to 1/1/2010 3:01:00 AM -05:00.
' Converted 1/1/2010 12:01:00 AM +00:00 to 12/31/2009 7:01:00 PM -05:00.
' Converted 11/6/2010 11:30:00 PM -07:00 to 11/7/2010 1:30:00 AM -05:00.
' Converted 11/7/2010 2:30:00 AM -08:00 to 11/7/2010 5:30:00 AM -05:00.
Comentarios
Al realizar la conversión, el método ConvertTime(DateTimeOffset, TimeZoneInfo) aplica las reglas de ajuste en vigor en la zona horaria destinationTimeZone
.
Esta sobrecarga difiere de las demás sobrecargas del método ConvertTime aceptando un valor de DateTimeOffset como primer parámetro. Esto identifica la fecha y hora como un desplazamiento de la hora universal coordinada (UTC) en lugar de como la fecha y hora en una zona horaria determinada. Como resultado, el parámetro dateTimeOffset
no puede representar una hora ambigua o una hora no válida.
Al convertir el valor de dateTimeOffset
a la hora de la zona horaria de destino, este método tiene en cuenta las reglas de ajuste en vigor en la zona horaria de destino.
Si la conversión de dateTimeOffset
da como resultado un valor de fecha y hora anterior a DateTimeOffset.MinValue o posterior a DateTimeOffset.MaxValue, este método devuelve DateTimeOffset.MinValue o DateTimeOffset.MaxValue, respectivamente.
Consulte también
Se aplica a
ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo)
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
Convierte una hora de una zona horaria a otra.
public:
static DateTime ConvertTime(DateTime dateTime, TimeZoneInfo ^ sourceTimeZone, TimeZoneInfo ^ destinationTimeZone);
public static DateTime ConvertTime (DateTime dateTime, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone);
static member ConvertTime : DateTime * TimeZoneInfo * TimeZoneInfo -> DateTime
Public Shared Function ConvertTime (dateTime As DateTime, sourceTimeZone As TimeZoneInfo, destinationTimeZone As TimeZoneInfo) As DateTime
Parámetros
- dateTime
- DateTime
Fecha y hora que se va a convertir.
- sourceTimeZone
- TimeZoneInfo
Zona horaria de dateTime
.
- destinationTimeZone
- TimeZoneInfo
Zona horaria a la que se va a convertir dateTime
.
Devoluciones
Fecha y hora en la zona horaria de destino que corresponde al parámetro dateTime
de la zona horaria de origen.
Excepciones
La propiedad Kind del parámetro dateTime
es Local, pero el parámetro sourceTimeZone
no es igual Local.
-o-
La propiedad Kind del parámetro dateTime
es Utc, pero el parámetro sourceTimeZone
no es igual Utc.
-o-
El parámetro dateTime
es una hora no válida (es decir, representa una hora que no existe debido a las reglas de ajuste de una zona horaria).
El parámetro sourceTimeZone
es null
.
-o-
El parámetro destinationTimeZone
es null
.
Ejemplos
En el ejemplo siguiente se muestra el uso del método ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) para convertir de hora estándar hawaiana a hora local.
DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
Console.WriteLine("{0} {1} is {2} local time.",
hwTime,
hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName,
TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.");
}
let hwTime = DateTime(2007, 02, 01, 08, 00, 00)
try
let hwZone = TimeZoneInfo.FindSystemTimeZoneById "Hawaiian Standard Time"
printfn $"{hwTime} {if hwZone.IsDaylightSavingTime hwTime then hwZone.DaylightName else hwZone.StandardName} is {TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local)} local time."
with
| :? TimeZoneNotFoundException ->
printfn "The registry does not define the Hawaiian Standard Time zone."
| :? InvalidTimeZoneException ->
printfn "Registry data on the Hawaiian Standard Time zone has been corrupted."
Dim hwTime As Date = #2/01/2007 8:00:00 AM#
Try
Dim hwZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time")
Console.WriteLine("{0} {1} is {2} local time.", _
hwTime, _
IIf(hwZone.IsDaylightSavingTime(hwTime), hwZone.DaylightName, hwZone.StandardName), _
TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local))
Catch e As TimeZoneNotFoundException
Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.")
Catch e As InvalidTimeZoneException
Console.WriteLine("Registry data on the Hawaiian Standard Time zone has been corrupted.")
End Try
Comentarios
Al realizar la conversión, el método ConvertTime aplica las reglas de ajuste en vigor en la zona horaria destinationTimeZone
.
El valor de la propiedad Kind del parámetro dateTime
debe corresponder al parámetro sourceTimeZone
, como se muestra en la tabla siguiente.
Valor DateTime.Kind | valor sourceTimeZone | Comportamiento del método |
---|---|---|
DateTimeKind.Utc | Es igual a TimeZoneInfo.Utc. | Convierte dateTime a la hora de la zona horaria de destino. |
DateTimeKind.Utc | No es igual a TimeZoneInfo.Utc. | Produce un ArgumentException. |
DateTimeKind.Local | Es igual a TimeZoneInfo.Local. | Convierte dateTime a la hora de la zona horaria de destino. |
DateTimeKind.Local | No es igual a TimeZoneInfo.Local. | Produce un ArgumentException. |
DateTimeKind.Unspecified | Cualquier. | Convierte dateTime a la hora de la zona horaria de destino. |
También puede convertir a o desde la hora universal coordinada (UTC) llamando a los métodos ConvertTimeFromUtc y ConvertTimeToUtc.
La propiedad Kind del valor devuelto DateTime se establece como se muestra en la tabla siguiente.
Condición | Valor de propiedad Kind devuelto |
---|---|
El argumento destinationTimeZone es TimeZoneInfo.Utc. |
DateTimeKind.Utc |
El argumento destinationTimeZone es TimeZoneInfo.Local. |
DateTimeKind.Local |
Todos los demás valores de fecha y hora, zonas horarias de origen y zonas horarias de destino. | DateTimeKind.Unspecified |
Si el valor del parámetro dateTime
es una hora ambigua en la zona horaria de origen, se interpreta como una hora estándar. Si el parámetro dateTime
es una hora no válida en la zona horaria de origen, este método produce un ArgumentException.
Si la conversión de dateTime
da como resultado un valor de fecha y hora anterior a DateTime.MinValue o posterior a DateTime.MaxValue, este método devuelve DateTime.MinValue o DateTime.MaxValue, respectivamente.
El método ConvertTime(DateTime, TimeZoneInfo, TimeZoneInfo) produce una excepción de ArgumentException si la propiedad DateTime.Kind del argumento dateTime
es DateTimeKind.Local, pero el argumento sourceTimeZone
no es TimeZoneInfo.Local. Para determinar si la zona horaria de origen es la zona horaria local o la zona horaria universal, el método comprueba la igualdad de referencia en lugar de probar la igualdad de valores con el método Equals(TimeZoneInfo). Tenga en cuenta que TimeZoneInfo objetos que representan la zona horaria local y que se recuperan llamando al método FindSystemTimeZoneById no tienen igualdad referencial con TimeZoneInfo.Local. Además, TimeZoneInfo objetos que representan la zona horaria local o universal y que se recuperan iterando la colección devuelta por el método GetSystemTimeZones no tienen igualdad referencial con TimeZoneInfo.Local o TimeZoneInfo.Utc. Como alternativa, puede llamar al método ConvertTimeBySystemTimeZoneId(DateTime, String, String).