2013-07-16 13 views
6

Mi è stato fornito un orario in questo formato "ddMMyyHHmmss". So che l'ora è in formato UTC. Vorrei usare la libreria NodaTime per convertirlo nel mio fuso orario locale ma non riesco a capirlo. Il mio obiettivo locale fuso orario è quello di essere la Nuova Zelanda.Converti ora UTC in ora locale utilizzando Nodatime

Ecco che cosa ho provato:

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

risposta

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

impressionante grazie, ho deciso di dargli un andare – dreza

+0

ha funzionato a meraviglia, applausi – dreza

+0

possono ottenere in qualsiasi momento proprio paese solo fornendo informazioni fuso orario alla libreria Noda. se sì, allora posso indicarmi l'articolo o il codice di esempio. grazie – Thomas

Problemi correlati