obiekty DateTime mają „rodzaj” zmienną, która pomaga TimeZoneInfo wiedzieć jak ją leczyć. W MSDN documentation dla TimeZone.ConvertTime ma następujący:
DateTimeKind.Local, konwertuje do czasu lokalnego czasu w destinationTimeZone.
DateTimeKind.Utc, konwertuje uniwersalnym czasem koordynowanym (UTC) do czasu w destinationTimeZone.
DateTimeKind.Unspecified, Zakładany jako lokalny.
Na przykład:
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);
Wyniki w:
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
lub jeśli lokalna strefa czasowa jest 'Eastern Standard Time' można uzyskać te wyniki
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
Jeśli chcesz, aby TimeZoneInfo traktował "Nieokreślony" jak Utc, powinieneś działać jak TimeZoneInfo.ConvertTimeFromUtc. Ponownie od MSDN documentation
DateTimeKind.Local, Zgłasza wyjątek ArgumentException.
DateTimeKind.Unspecified lub DateTimeKind.Utc, przekształca ze skoordynowanego czasu uniwersalnego (UTC).
Czy rozważałeś używać czasu Noda? https://code.google.com/p/noda-time/ –
Chciałem również zaproponować noda-time, użyłem także http://www.babiej.demon.nl/Tz4Net/main.htm z sukcesem – JeremyWeir
@RayCheng Dam ci szansę. Dziękuję Ci. –