C # DateTime ke UTC tanpa mengubah waktu

124

Bagaimana cara mengubah waktu yang sudah ada sebelumnya menjadi waktu UTC tanpa mengubah waktu sebenarnya.

Contoh:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
Luke Belbina
sumber
Anda berada di PST ? Bagaimana Anda mendapatkan PSTnilai?
Kiquenet

Jawaban:

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

dari

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.dll
sumber
50

Gunakan DateTime.SpecifyKindmetode statis.

Membuat objek DateTime baru yang memiliki jumlah tick yang sama dengan DateTime yang ditentukan, tetapi ditetapkan sebagai waktu lokal, Coordinated Universal Time (UTC), atau tidak keduanya, seperti yang ditunjukkan oleh nilai DateTimeKind yang ditentukan.

Contoh:

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
sumber
18

Anda dapat menggunakan konstruktor kelebihan beban dari DateTime:

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

Anda juga bisa melakukannya dengan cara ini:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();
Reyan Chougle
sumber
Ini mungkin tidak bekerja seperti yang diharapkan. Coba ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() Anda akan melihat Anda mendapatkan hasil yang berbeda.
Homer
-7

Gunakan DateTime.ToUniversalTimemetode ini.

Femaref
sumber
3
yang mengubah dateTime menjadi 11pm (saya di PST)
Luke Belbina