我的剃刀视图中有代码:
@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。
但是,它仍然是从数据库中检索出来的原始时间。
如何将其转换为运行应用程序的服务器所在的时区?
答案 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()调用应该可以正常工作。