在ASP.NET MVC剃刀视图中显示本地日期/时间

use*_*554 4 asp.net-mvc razor

我有一个ASP.NET MVC应用程序。该应用程序使用Razor作为视图引擎。我需要向用户显示日期/时间。我的挑战是,DateTime模型的属性位于UTC时间。我想将时间显示为用户的本地时间。目前,我有以下内容:

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

我想将其显示DateTime为“ 2015年2月11日,星期三,下午3:27”。但是,我不确定如何执行此操作。当我执行上述操作时,将打印一个空字符串。这对我来说毫无意义。

感谢您的任何见解

int*_*tox 7

一种选择是使用JavaScript。

在您看来

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

JS(我的JQuery示例)

$("time").each(function (elem) {
        var utctimeval = $(this).html();
        var date = new Date(utctimeval);
        $(this).html(date.toLocaleString());
})
Run Code Online (Sandbox Code Playgroud)

  • 这段代码对服务器文化很敏感,因为冒号“:”可能以点结尾。Se [此处](https://social.msdn.microsoft.com/Forums/vstudio/en-US/bb926074-d593-4e0b-8754-7026acc607ec/datetime-tostring-colon-replaced-with-period?forum=csharpgeneral )。改为使用:&lt;time&gt; @ Model.LastModifiedOnUTC.ToString(“ yyyy-MM-ddTHH:mm:ssZ”,CultureInfo.InvariantCulture)&lt;time&gt;我只是遇到了此问题,并使用InvariantCultre对其进行了纠正。 (2认同)

小智 -12

您可以在剃刀中使用以下代码

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

  • 部署网站后,此 ToLocalTime() 将 UTC 时间转换为服务器时区,而不是按照客户端浏览器。 (20认同)