2011-06-01 56 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