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.