修改模型中的每个DateTime实例(服务器时间到客户端时间)

时间:2013-03-25 06:34:29

标签: asp.net-mvc razor

是否有办法修改从控制器获取的每个DateTime实例?

我在UTC时区保存在服务器上的日期时间。但在浏览器中我需要在客户端时区显示日期。 所以每次我必须在客户端时区手动转换日期时间:

model.DateCreated = ConvertToClientTimeZone(model.DateCreated)

这不舒服。所以我问可能的方法自动进行这种转换?

2 个答案:

答案 0 :(得分:2)

如果您使用视图模型,您还可以将时区转换逻辑放在映射功能中,以将您的域模型转换为视图模型。

即。如果您使用AutoMapper我认为可以配置AutoMapper,以便在映射日期时自动执行从UTC(在DB中)到客户端时区的转换。这样就减少了忘记调用转换辅助函数并向用户显示错误的DateTime的可能性。

不要忘记您还必须从从客户端到数据库的DateTimes(从视图模型到域模型)进行转换。

答案 1 :(得分:0)

您可以编写自定义HTML帮助程序:

public static IHtmlString FormatDate(this HtmlHelper html, DateTime date)
{
    string result = ... format the date however you like
    return new HtmlString(result);
}

然后在视图中:

@Html.FormatDate(model.DateCreated)