Asp.net mvc 在ASP.NET MVC Razor视图中显示本地日期/时间

Asp.net mvc 在ASP.NET MVC Razor视图中显示本地日期/时间,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个ASP.NETMVC应用程序。此应用程序使用Razor作为查看引擎。我需要向用户显示日期/时间。我的挑战是,模型上的DateTime属性是UTC时间。我想将时间显示为用户的本地时间。目前,我有以下几点: <div> @if (Model.LastModifiedOnUTC.HasValue) { Html.Raw(Model.LastModifiedOnUTC.ToString()); } else { <span>This record has not

我有一个ASP.NETMVC应用程序。此应用程序使用Razor作为查看引擎。我需要向用户显示日期/时间。我的挑战是,模型上的
DateTime
属性是UTC时间。我想将时间显示为用户的本地时间。目前,我有以下几点:

<div>
@if (Model.LastModifiedOnUTC.HasValue) {
  Html.Raw(Model.LastModifiedOnUTC.ToString());
}
else {
  <span>This record has not been updated</span>
}
</div>

@if(Model.LastModifiedOnUTC.HasValue){
Html.Raw(Model.LastModifiedOnUTC.ToString());
}
否则{
此记录尚未更新
}
我想将日期时间显示为“2015年2月11日星期三下午3:27”。然而,我不知道该怎么做。当我执行上述操作时,将打印一个空字符串。这对我来说毫无意义


感谢您提供的任何见解

您可以在razor中使用以下代码

<div>
@if (Model.LastModifiedOnUTC.HasValue) {
Html.Raw(Model.LastModifiedOnUTC.ToLocalTime().ToString());
}
else {
<span>This record has not been updated</span>
}
</div>

@if(Model.LastModifiedOnUTC.HasValue){
Html.Raw(Model.LastModifiedOnUTC.ToLocalTime().ToString());
}
否则{
此记录尚未更新
}

一个选项是使用JavaScript

在你看来

<time>@Model.LastModifiedOnUTC.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture)<time>

我认为这最好在客户端完成,因为本地时区在那里是已知的。因此,您需要使用JavaScript以及如何在这个问题中进行解释:Rick Strahl最近就这个主题发表了一篇博客文章。在他的帖子中,有一条提到了从浏览器中捕获用户的默认时区,并在服务器端计算正确的时间。查看他的帖子。向下滚动到“捕获Web用户的默认时区”部分,您是否可以拒绝接受已接受的答案?这不是正确的方法,因为它将在本地时间检索服务器,而不是客户端。这会让很多人感到厌烦。网站部署后,此ToLocalTime()将UTC时间转换为服务器时间僵尸,而不是按照客户端浏览器。此代码对服务器文化非常敏感,因为“:”冒号可能以点结尾。东南方。改用:@Model.LastModifiedOnUTC.ToString(“yyyy-MM-ddTHH:MM:ssZ”,CultureInfo.InvariantCulture)我刚刚遇到这个问题,并用InvariantCulture纠正了它。
$("time").each(function (elem) {
        var utctimeval = $(this).html();
        var date = new Date(utctimeval);
        $(this).html(date.toLocaleString());
})