2013-07-16 18 views
6

Ich habe eine Zeit in diesem Format "ddMMyyHHmmss" zur Verfügung gestellt. Ich weiß, dass die Zeit im UTC-Format ist. Ich würde gerne die NodaTime-Bibliothek verwenden, um diese in meine lokale Zeitzone zu konvertieren, aber ich kann es nicht herausfinden. Mein Ziel für die lokale Zeitzone ist Neuseeland.UTC-Zeit in Ortszeit konvertieren mit Nodatime

Hier ist, was ich versucht habe:

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); 

Antwort

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

genial, danke, ich geb ein es gehen – dreza

+0

eine Behandlung Arbeitete, prost – dreza

+0

können jedes Land Ortszeit bekommen nur Zeitzone Info noda Bibliothek bereitstellt. Wenn ja dann kann ich auf den richtigen Artikel oder Beispielcode verweisen. danke – Thomas

Verwandte Themen