C#DateTime到UTC时间而不更改时间

时间:2011-06-01 22:56:13

标签: c# datetime utc

如何在不改变实际时间的情况下将预先存在的日期时间转换为UTC时间。

示例:

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

4 个答案:

答案 0 :(得分:178)

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

答案 1 :(得分:43)

使用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

答案 2 :(得分:9)

您可以使用DateTime的重载构造函数:

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

答案 3 :(得分:-5)

使用DateTime.ToUniversalTime方法。