Per un po 'più di colore
2011-11-28T07:21:41.000Z
Questo è un ISO8601 timestamp, il Z alla fine sta per UTC. Questo rappresenta un'istanza specifica nel tempo.
DateTime.Parse
restituirà una struttura temporale di data locale, ci sono tre tipi di tipi datetime, UTC, Locale e Non specificato.
Se si tenta di visualizzare questo, verrà visualizzato questo istante nel fuso orario corrente del computer (Sono ora orientale, quindi quando lo stampo ottengo 11/28/2011 2:21:41 AM
).
Se voglio cambiare questo DateTime Kind
a UTC, avrei potuto fare qualcosa di simile
DateTime.Parse("2011-11-28T07:21:41.000Z").ToUniversalTime()
stampa questa ora (dal momento che è sorta è ora UTC) ottengo 11/28/2011 7:21:41 AM
.
Si noti che sebbene l'ora sia stampata in modo diverso entrambi questi orari si riferiscono allo stesso istante di tempo.
Per visualizzare questo istante in un fuso orario diverso, il modo più semplice in imo è la classe TimeZoneInfo (anche se non sono sicuro che sia accurato al 100%).
TimeZoneInfo.ConverTimeBySystemTimeZoneId(dateTime, "Pacific Standard Time").
Stampa ora produrrà il risultato desiderato 11/27/2011 11:21:41 PM
Nota che la proprietà questo ritorno di DateTime Kind
è ora Unspecified
, che significa che non sarà in grado di trasferire di nuovo a UTC, senza ulteriori informazioni. Non hai più un istante specifico nel tempo, ma hai un tempo non specificato. Sappiamo che è lo stesso istante di quelli precedenti in tempi pacifici, ma il computer non lo sa più. Tienilo a mente se vuoi conservare questa volta.
fonte
2015-03-04 13:31:48
Controllare questa domanda: http://stackoverflow.com/questions/179940/c-sharp-convert-utc-gmt-time-to-local-time – Nayan
provato alcune strategie, come ad esempio 'DateTime.Parse (oggetto. Data.ToShortDateString()). ToLocalTime() 'ma non succede nulla ... – markzzz
Non vedo una modalità di errore tranne una: controlla che la tua macchina sia effettivamente nel fuso orario PST. Documenta il tempo che ottieni, non solo la data. –