C# DateTime 转 UTC 时间而不改变时间

问题描述 投票:0回答:5

如何将预先存在的日期时间转换为 UTC 时间而不更改实际时间。

示例:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
c# datetime utc
5个回答
271
投票
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);

71
投票

使用

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

32
投票

可以使用

DateTime
的重载构造函数:

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

0
投票

在静态类中创建扩展库

   public static ToUtcDateTime(this DateTime datetime)
    {
        return DateTime.SpecifyKind(datetime,DateTimeKind.Utc);
    }

以上应该可以正常工作


-10
投票

使用

DateTime.ToUniversalTime
方法。

© www.soinside.com 2019 - 2024. All rights reserved.