有没有办法修改从控制器到视图的每个 DateTime 实例?
我在 UTC 时区的服务器上保存了日期时间。但在浏览器中,我需要在客户端时区显示日期。所以每次我必须在客户时区手动转换日期时间:
model.DateCreated = ConvertToClientTimeZone(model.DateCreated)
这很不舒服。所以我在问自动进行这种转换的可能方法?
有没有办法修改从控制器到视图的每个 DateTime 实例?
我在 UTC 时区的服务器上保存了日期时间。但在浏览器中,我需要在客户端时区显示日期。所以每次我必须在客户时区手动转换日期时间:
model.DateCreated = ConvertToClientTimeZone(model.DateCreated)
这很不舒服。所以我在问自动进行这种转换的可能方法?
如果您使用视图模型,您还可以将时区转换逻辑放入映射功能中,将您的域模型转换为视图模型。
即,如果您使用的是 AutoMapper,我认为可以配置 AutoMapper,以便在映射日期时自动执行从 UTC(在 DB 中)到客户端时区的转换。这样可以减少忘记调用转换辅助函数并向用户显示错误日期时间的可能性。
不要忘记,您还必须将来自客户端的 DateTimes 转换为 DB(从视图模型到域模型)。
您可以编写一个自定义 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)