ฉันจะแปลงวันที่และเวลาที่มีอยู่ก่อนหน้านี้เป็นเวลา UTC ได้อย่างไรโดยไม่ต้องเปลี่ยนเวลาจริง
ตัวอย่าง:
DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
ฉันจะแปลงวันที่และเวลาที่มีอยู่ก่อนหน้านี้เป็นเวลา UTC ได้อย่างไรโดยไม่ต้องเปลี่ยนเวลาจริง
ตัวอย่าง:
DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
คำตอบ:
6/1/2011 4:08:40 PM Local
6/1/2011 4:08:40 PM Utc
จาก
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);
ใช้DateTime.SpecifyKind
วิธีคงที่
สร้างออบเจ็กต์ DateTime ใหม่ที่มีจำนวนเห็บเท่ากับ DateTime ที่ระบุ แต่ถูกกำหนดให้เป็นเวลาท้องถิ่นเวลาสากลเชิงพิกัด (UTC) หรือไม่ตามที่ระบุโดยค่า DateTimeKind ที่ระบุ
ตัวอย่าง:
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
คุณสามารถใช้ตัวสร้างที่โอเวอร์โหลดของDateTime
:
DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc);
คุณสามารถทำได้ด้วยวิธีนี้เช่นกัน:
DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();
new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString()
vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString()
คุณจะเห็นว่าคุณได้ผลลัพธ์ที่แตกต่างกัน
PST
คุ้มค่าอย่างไร?