ASP.NET MVC处理时区实体框架

时间:2014-05-09 18:33:58

标签: entity-framework asp.net-mvc-4

我想将当前用户的当前DateTime.Now保存为UTC。对于任何用户来说,时间是相对于彼此的?我使用此代码片段来实现实体框架的UTC: Entity Framework DateTime and UTC

查看数据库后,日期列未更改。

09.05.2014 20:21:24

我需要在客户端显示相对于每个用户的日期。因此,当用户在美国14:00创建自己的帐户时,我希望在欧洲看到20:00

2 个答案:

答案 0 :(得分:1)

在DateTime对象上调用.ToLocalTime()会将其转换为本地时间。您应该始终将日期保存为UTC,然后在显示时进行转换。

答案 1 :(得分:1)

首先,您需要使用DateTime.UtcNow而不是DateTime.Now。 EF将保存日期,它不会做任何事情。

对于数据库,它只是一个日期,无论是UTC还是特定时区,数据库都不知道。只有当我们从数据库中检索日期时,在将其显示给本地用户之前,我们应该在客户端UI库中调用ToLocalTime或类似方法将UTC转换为本地时间。 ToLocalTime假定输入实际上是UTC。

如果您要从客户端保存日期,例如使用JavaScript中的AJAX帖子,则应将JavaScript日期序列化为UTC。

请记住,服务器不知道您发送日期的位置,服务器无法将任何日期转换为UTC,另一方面,客户端完全了解设置的国家/地区和时区,并且可以轻松地将本地时间转换为UTC