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

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);

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

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);

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();

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.