C# 将Utc时间更改为本地时间

C# 将Utc时间更改为本地时间,c#,datetime,C#,Datetime,如何将UTC时间更改为本地时间 var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt); 我有这个密码 DateTime dt = booking.CreateDateTime.Value; 其中CreationDateTime的格式为UTC 当我在客户端将时间更改为本地时间时,它比本地时间快7小时 var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt); 任何人对此都有想法

如何将UTC时间更改为本地时间

var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt);
我有这个密码

DateTime dt = booking.CreateDateTime.Value;
其中CreationDateTime的格式为UTC

当我在客户端将时间更改为本地时间时,它比本地时间快7小时

var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt);
任何人对此都有想法

这就是我将它改为当地时间的方式

var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt);
预订时,datetime的服务器端代码为

booking.CreateDateTime = DateTime.UtcNow;

实际上,只有两件事可能是错误的:

  • UTC日期实际上不是UTC

  • 运行此操作的机器未设置为正确的时区


  • 看起来.net假定日期是本地时间。在下面的代码中,dt1和dt3都与dt相同。一种解决方案是使用TimeZone.CurrentTimeZone.GetUtcOffset并自己进行计算

    dt = Now
    dt1 = TimeZone.CurrentTimeZone.ToLocalTime(dt)
    dt2 = TimeZone.CurrentTimeZone.ToUniversalTime(dt)
    dt3 = dt.ToLocalTime
    dt4 = dt.ToUniversalTime
    

    该机器上的当前时区实际上是您所在位置的当前时区吗?是的,此代码来自澳大利亚/堪培拉的移动应用程序,请选择“dt”的种类属性。可能不是您所期望的UTC:您如何知道日期是UTC?@AmritSharma如果您想将
    dt
    (UTC时间)转换为本地时间。您告诉utc比
    DateTime localTime=dt.AddHours(7)快7小时