gpt4 book ai didi

javascript - ASP.NET MVC Controller / View 显示本地时间

转载 作者:可可西里 更新时间:2023-11-01 01:49:27 26 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 应用程序,它以 UTC 格式存储所有 SQL 日期时间,因此无论客户端从哪个时区访问网站,时间都是一致的。

现在,我想向用户重新显示正确的时间,所以每当我在 View 中显示时间时,我都会使用:

timeVariable.ToLocalTime();

但是,.ToLocalTime() 基于服务器,而不是客户端。

我需要在客户端用 JavaScript 处理吗?

我可能可以将时区作为请求的一部分传递,并让 Controller 处理最差的情况,但我假设有更好的方法可以做到这一点。或者不存在?

在此先感谢您的帮助!

-马特

最佳答案

对于 Asp.Net MVC + jQuery,我创建了一个 DisplayTemplate 和脚本来帮助解决这个问题。

模型类:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

public class SampleModelWithDate
{
[UIHint("UTCTime")]
[DataType(DataType.DateTime)]
public DateTime Date { get; set; }
}

显示模板:Views\Shared\DisplayTemplates\UTCTime.cshtml

@model DateTime
<span class="UTCTime">@Model</span>

添加到 Views\Shared_Layout.cshtml,或添加到您的 View :

<script>
$(function () {
// Determine timezone offset in milliseconds
// from: http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp
var d = new Date()
var offsetms = d.getTimezoneOffset() * 60 * 1000;
$('.UTCTime').each(function () {
try
{
var text = $(this).html();

var n = new Date(text);
n = new Date(n.valueOf() - offsetms);

$(this).html(n.toDateString() + " " + n.toLocaleTimeString());

$(this).attr("Converted from UTC " + text);
}
catch (ex) {
console.warn("Error converting time", ex);
}
});
});
</script>

当然,稍微清理一下,它有点冗长,所以您可以看到发生了什么。

关于javascript - ASP.NET MVC Controller / View 显示本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8144004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com