c# - 具有特定时区的 Javascript 整数到日期时间

标签 c# javascript asp.net-mvc-3 datetime serialization

我在 SQL Server 2005 数据库中保存了以下日期时间:2012-12-06 16:20:11.010

我想在客户端使用 javascript 显示此日期时间,因此我使用 System.Web.Helpers.Json.Encode 将其序列化(作为更大对象的一部分),它运行以下命令代码:

internal static readonly long DatetimeMinTimeTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;

private static void SerializeDateTime(DateTime datetime, StringBuilder sb, JavaScriptSerializer.SerializationFormat serializationFormat)
{
    if (serializationFormat == JavaScriptSerializer.SerializationFormat.JSON)
    {
        sb.Append("\"\\/Date(");
        sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
        sb.Append(")\\/\"");
        return;
    }
    sb.Append("new Date(");
    sb.Append((datetime.ToUniversalTime().Ticks - JavaScriptSerializer.DatetimeMinTimeTicks) / 10000L);
    sb.Append(")");
}

在客户端,我将它转换为日期时间对象,如下所示:( JSFiddle )

var strDate = "/Date(1354828811010)/"; //value returned by above function
var re = /-?\d+/;
var m = re.exec(strDate);            
var date = new Date(parseInt(m[0]));

在时区设置为东部标准时间的 PC 上,此时间正确显示为 Thu Dec 06 2012 16:20:11 GMT-0500(东部标准时间)。但是,在时区为 GMT-6 的电脑上,它返回为 Thu Dec 06 2012 15:20:11 GMT-0600(中部标准时间)

这个时间是正确的 Thu Dec 06 2012 16:20:11 GMT-0600(中部标准时间),但我不确定如何最好地正确显示它。我不需要实际显示时区,我只需要它显示为 16:20:11,而不管用户的本地时区设置如何。

javascript 中是否有一种机制可以让我将日期强制到特定时区?我对它所做的研究表明没有。

否则,如果我需要更改服务器端,我最好的选择是什么?

最佳答案

我相信您要查找的内容与 Moment.js issue 611 中描述的内容相关.如果是这样,请将您的反馈添加到此问题中好吗?这对我来说无疑是一个亮点。

顺便说一句 - 我也查看了 DateJS 和 XDate,据我所知,没有一个具有此功能。 JavaScript 似乎锁定在 UTC 或浏览器的本地时区。

此外,Moment.js 已经处理了 JavaScriptSerializer 发出的 Microsoft 日期格式,因此您可以直接使用它。但是,我强烈建议使用 JSON.Net反而。甚至微软现在也在使用它。默认情况下,它将返回 ISO 格式的日期。

关于c# - 具有特定时区的 Javascript 整数到日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147253/

相关文章:

c# - 选择正确的事件处理程序

javascript - 我怎样才能保存cookie

javascript - Javascript 中删除运算符的目的是什么?

asp.net - 如何以 HTML 形式编辑模型属性

c# - 生成除黑色之外的随机颜色

c# - 正则表达式在 .NET 中不起作用

c# - 当async block并发数大于1时,抛出异常怎么办?

javascript - 此 cookie 值的正则表达式?

c# - 启动我的调试 MVC3 应用程序会在浏览器中打开一个特定的 .cshtml 文件

asp.net-mvc-3 - Azure 中的自定义域映射