C # DateTime a UTC Time senza modificare l'ora


124

Come convertire un datetime preesistente in ora UTC senza modificare l'ora effettiva.

Esempio:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm

Sei in PST ? Come ottieni PSTvalore?
Kiquenet

Risposte:


207
6/1/2011 4:08:40 PM Local
6/1/2011 4:08:40 PM Utc

a partire dal

DateTime dt = DateTime.Now;            
Console.WriteLine("{0} {1}", dt, dt.Kind);
DateTime ut = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
Console.WriteLine("{0} {1}", ut, ut.Kind);

50

Usa il DateTime.SpecifyKindmetodo statico.

Crea un nuovo oggetto DateTime con lo stesso numero di tick del DateTime specificato, ma designato come ora locale, ora UTC (Coordinated Universal Time) o nessuno dei due, come indicato dal valore DateTimeKind specificato.

Esempio:

DateTime dateTime = DateTime.Now;
DateTime other = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);

Console.WriteLine(dateTime + " " + dateTime.Kind); // 6/1/2011 4:14:54 PM Local
Console.WriteLine(other + " " + other.Kind);       // 6/1/2011 4:14:54 PM Utc

18

È possibile utilizzare il costruttore sovraccarico di DateTime:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc);

0

Puoi farlo anche in questo modo:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();

Potrebbe non funzionare come previsto. Prova ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() Vedrai che otterrai risultati diversi.
Homer il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.