为什么.ToLocalTime不将UTC时间转换为本地时间?

时间:2018-06-22 13:39:23

标签: javascript c# asp.net asp.net-mvc datetime

我的剃刀视图中有代码:

@Model.DateUpdated.ToLocalTime().ToString("dd/MM/yyyy HH:mm:ss")

在我的模型中,属性如下:

public DateTime DateUpdated { get; set; }

这是从数据库中存储的日期(以UTC DateTime)填充的。

因此,当数据库中的时间返回为01/01/2018 08:00时,我希望它在视图中呈现为01/01/2018 09:00作为我的本地时间(我正在运行的机器这个)是UTC + 1。

但是,它仍然是从数据库中检索出来的原始时间。

如何将其转换为运行应用程序的服务器所在的时区?

1 个答案:

答案 0 :(得分:2)

在输出字符串之前,我建议记录DateTimeKind字段的DateUpdated

例如

Console.WriteLine(DateUpdated.Kind);

要确保字段DateUpdated实际上是UTC,可以尝试:

DateUpdated = new DateTime(DateUpdated.Ticks, DateTimeKind.Utc);

然后,当您输出时,结果实际上应该是本地时间。

如果原始DateUpdated字段的DateTimeKind是DateTimeKind.Local,则函数.ToLocalTime()将无效。当您从外部来源(例如,数据库,解析等。

如果DateUpdated字段的.Kind属性为UTC或未指定,则ToLocalTime()调用应该可以正常工作。