2011-06-01 138 views
80

如何將預先存在的日期時間轉換爲UTC時間而不更改實際時間。C#日期時間到UTC時間而不更改時間

實施例:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm 
dateTime.ToUtcDateTime() // datetime should still be 3pm 
+0

你在*** *** PST?你如何獲得'PST'值? – Kiquenet 2018-03-01 09:19:52

回答

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

使用DateTime.ToUniversalTime方法。

+0

將dateTime更改爲11pm(我在PST中) – 2011-06-01 23:00:02

10

您可以使用DateTime重載的構造函數:

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

使用DateTime.SpecifyKind靜態方法。

創建具有相同數目的刻度作爲指定的日期時間的新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