Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

แปลงค่า DateTime ปัจจุบันเป็นเวลา UTC ใน C#

ภาพรวม

เมธอด DateTime.ToUniversalTime() แปลงค่า DateTime จากเวลาท้องถิ่น (local time) เป็นเวลาสากลพิกัด (Coordinated Universal Time - UTC) โดยคำนึงถึงเขตเวลาและการประหยัดแสงวัน (Daylight Saving Time) ของระบบ

ตัวอย่างที่ 1: แปลง DateTime ที่สร้างด้วยคอนสตรัคเตอร์

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d = new DateTime(2019, 12, 11, 7, 11, 25);
        Console.WriteLine("Date = {0}", d);
        DateTime res = d.ToUniversalTime();
        Console.WriteLine("String representation = {0}", res);
    }
}

ผลลัพธ์ (ขึ้นอยู่กับเขตเวลาของเครื่อง)

Date = 11/11/2019 7:11:25 AM
String representation = 11/11/2019 7:11:25 AM

ตัวอย่างที่ 2: แปลงจากสตริงผ่าน Parse แล้ว ToUniversalTime

using System;

public class Demo
{
    public static void Main()
    {
        DateTime localDate, universalDate;
        String str = "11/11/2019 4:10:55";
        localDate = DateTime.Parse(str);
        universalDate = localDate.ToUniversalTime();
        Console.WriteLine("Local time = {0} ", localDate);
        Console.WriteLine("Universal time = {0} ", universalDate);
    }
}

ผลลัพธ์ (ขึ้นอยู่กับเขตเวลา)

Local time = 11/11/2019 4:10:55 AM
Universal time = 11/11/2019 4:10:55 AM

คำอธิบายเพิ่มเติม

  • ผลลัพธ์ขึ้นอยู่กับการตั้งค่าเขตเวลา (Time Zone) ของเครื่องที่รันโค้ด
  • DateTime.Kind Property ระบุว่า DateTime เป็น Local, Utc, หรือ Unspecified
  • หาก Kind = Unspecified จะถือว่าเป็น Local time
  • สำหรับแอปพลิเคชันสมัยใหม่ แนะนำใช้ DateTimeOffset หรือ TimeZoneInfo ซึ่งจัดการเขตเวลาชัดเจนกว่า
  • TimeZoneInfo.ConvertTimeToUtc() ให้การควบคุมเขตเวลาได้ชัดเจนกว่า