C # DateTime to UTC Time ohne Änderung der Uhrzeit

124

Wie würde ich eine bereits vorhandene Datumszeit in UTC-Zeit konvertieren, ohne die tatsächliche Zeit zu ändern?

Beispiel:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
Luke Belbina
quelle
Du bist in PST ? Wie bekommen Sie PSTWert?
Kiquenet

Antworten:

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

von

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);
tofutim
quelle
50

Verwenden Sie die DateTime.SpecifyKindstatische Methode.

Erstellt ein neues DateTime-Objekt mit der gleichen Anzahl von Ticks wie die angegebene DateTime, wird jedoch entweder als Ortszeit, koordinierte Weltzeit (UTC) oder keine angegeben, wie durch den angegebenen DateTimeKind-Wert angegeben.

Beispiel:

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
Liam
quelle
18

Sie können den überladenen Konstruktor verwenden von DateTime:

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

Sie können es auch so machen:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();
Reyan Chougle
quelle
Dies funktioniert möglicherweise nicht wie erwartet. Versuchen Sie ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() Sie werden sehen, dass Sie unterschiedliche Ergebnisse erhalten.
Homer
-7

Verwenden Sie die DateTime.ToUniversalTimeMethode.

Femaref
quelle
3
das ändert die dateTime auf 23 Uhr (ich bin in PST)
Luke Belbina