2013-07-16 17 views
6

Podano mi czas w tym formacie "ddMMyyHHmmss". Wiem, że czas jest w formacie UTC. Chciałbym użyć biblioteki NodaTime, aby przekonwertować to do mojej lokalnej strefy czasowej, ale nie mogę tego zrozumieć. Moim lokalnym celem czasowym będzie Nowa Zelandia.Konwersja czasu UTC do czasu lokalnego za pomocą Nobiime

Oto co próbowałem:

var pattern = LocalDateTimePattern.CreateWithInvariantCulture("ddMMyyHHmmss"); 

var parseResult = pattern.Parse(utcDateTime); 
if (!parseResult.Success) 
{ 
    throw new InvalidDataException("Invalid time specified " + date + time); 
} 

var timeZone = DateTimeZoneProviders.Bcl["New Zealand Standard Time"]; 

var zone = new ZonedDateTime(
        localDateTime, 
        timeZone, 
        timeZone.GetUtcOffset(SystemClock.Instance.Now)); 


return new DateTime(zone.ToInstant().Ticks); 

Odpowiedz

14
// Since your input value is in UTC, parse it directly as an Instant. 
var pattern = InstantPattern.CreateWithInvariantCulture("ddMMyyHHmmss"); 
var parseResult = pattern.Parse("150713192900"); 
if (!parseResult.Success) 
    throw new InvalidDataException("...whatever..."); 
var instant = parseResult.Value; 

Debug.WriteLine(instant); // 2013-07-15T19:29:00Z 

// You will always be better off with the tzdb, but either of these will work. 
var timeZone = DateTimeZoneProviders.Tzdb["Pacific/Auckland"]; 
//var timeZone = DateTimeZoneProviders.Bcl["New Zealand Standard Time"]; 

// Convert the instant to the zone's local time 
var zonedDateTime = instant.InZone(timeZone); 

Debug.WriteLine(zonedDateTime); 
    // Local: 7/16/2013 7:29:00 AM Offset: +12 Zone: Pacific/Auckland 

// and if you must have a DateTime, get it like this 
var bclDateTime = zonedDateTime.ToDateTimeUnspecified(); 

Debug.WriteLine(bclDateTime.ToString("o")); // 2013-07-16T07:29:00.0000000 
+0

niesamowite dzięki, dam mu iść – dreza

+0

pracowała doskonale, okrzyki – dreza

+0

można uzyskać wszelkie Czas lokalny tylko dostarczanie informacji czasowej do biblioteki Noda. jeśli tak, to możesz wskazać mi odpowiedni artykuł lub kod przykładowy. dzięki – Thomas

Powiązane problemy