oggetti DateTime hanno una variabile "genere" che aiuta TimeZoneInfo sa come trattarla. Nel MSDN documentation per TimeZone.ConvertTime ha la seguente:
DateTimeKind.Local, Converte l'ora locale al tempo in destinationTimeZone.
DateTimeKind.Utc, converte l'ora universale coordinata (UTC) nell'ora in destinationTimeZone.
DateTimeKind.Unspecified, presumibilmente locale.
Ad esempio:
Console.WriteLine("Local time zone is '{0}'.", TimeZoneInfo.Local.Id);
var gmTime = new DateTime(2013, 03, 02, 01, 00, 00, DateTimeKind.Utc);
var localTime = new DateTime(2013, 03, 02, 01, 00, 00, DateTimeKind.Local);
var unspecifiedTime = new DateTime(2013, 03, 02, 01, 00, 00);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var gmTimeConverted = TimeZoneInfo.ConvertTime(gmTime, timeZone); // 03/02/2013 8:00:00AM
var localTimeConverted = TimeZoneInfo.ConvertTime(localTime, timeZone); // 03/02/2013
var unspecifiedTimeConverted = TimeZoneInfo.ConvertTime(unspecifiedTime, timeZone);
Console.WriteLine("Converting GMT to EST: {0}", gmTimeConverted);
Console.WriteLine("Converting Local to EST: {0}", localTimeConverted);
Console.WriteLine("Converting Unspecified to EST: {0}", unspecifiedTimeConverted);
risultati in:
Local time zone is 'Pacific Standard Time'.
Converting GMT to EST: 3/1/2013 8:00:00 PM
Converting Local to EST: 3/2/2013 4:00:00 AM
Converting Unspecified to EST: 3/2/2013 4:00:00 AM
o se il fuso orario locale è 'Orientale standard Time' si ottiene questi risultati
Local time zone is 'Eastern Standard Time'.
Converting GMT to EST: 3/1/2013 8:00:00 PM
Converting Local to EST: 3/2/2013 1:00:00 AM
Converting Unspecified to EST: 3/2/2013 1:00:00 AM
Se desideri che TimeZoneInfo consideri "Non specificato" come Utc, dovresti funzionare come TimeZoneInfo.ConvertTimeFromUtc. Ancora da MSDN documentation
DateTimeKind.Local, Genera un ArgumentException.
DateTimeKind.Unspecified o DateTimeKind.Utc, Converte da Coordinated Universal Time (UTC).
Hai mai pensato di utilizzare Noda time? https://code.google.com/p/noda-time/ –
Stavo per suggerire noda-time, ho anche usato http://www.babiej.demon.nl/Tz4Net/main.htm con successo – JeremyWeir
@RayCheng darò un colpo. Grazie. –