【问题标题】:Date changed to local time when being passed using JSON使用 JSON 传递时,日期更改为本地时间
【发布时间】:2010-09-01 17:51:04
【问题描述】:

我有一个显示对象数据的页面。我正在加载对象服务器端,并通过带有 json 的 AJAX 调用传递结果。有一个日期属性是对象的一部分。由于某种原因,日期正在更改。看起来它正在尝试考虑我所在的时区并从日期中减去 4 小时(我在 EST,与 GMT 相差 -4)。

当我单击消息的“显示”按钮时,它会进行 AJAX 调用以加载该消息的数据,然后显示它。

这是我的 javascript 代码:

function onBtnDisplayClicked(id)
{
    $.ajax({
        type: "POST",
        url: "<%= Url.Action("GetMessage") %>?id=" + id.toString(),
        success: function(data) { bindItem(data); },
        dataType: "json",
        contentType: "application/json; charset=utf-8"
    });
}


function bindItem(data) 
{
    $("#MessageID").val(data.MessageID);

    //Create a Date object from JSON date format - ex: (1230807660000-4000)
    var messageDate = new Date(parseInt(data.MessageDate.replace(/\/Date\((\d+)\)\//, '$1')));

    //Format date using DateFormat plugin (http://jacwright.com/projects/javascript/date_format)
    $("#txtMessageDate").val(messageDate.format('m/d/Y H:i'));
}

这是我的服务器端代码:

public JsonResult GetMessage(int id)
{
    Message msg = new Message();
    msg.LoadByPrimaryKey(id);

    var data = new
    {
        MessageID = msg.MessageID.Value,
        MessageDate = msg.MessageDate.Value
    };

    return new JsonResult() { Data = data };
}

这将在我的本地环境中正常工作,但不适用于我的生产环境。在我的本地环境中,服务器时间设置为 EST(下午 2:00)。在生产环境中,服务器时间设置为 GMT(下午 6:00)。

因此,如果我尝试显示“09/01/2010 09:00 AM”,它将在我的本地环境中正确显示,但在生产中显示为“09/01/2010 05:00 AM”。我不确定它为什么会这样。

【问题讨论】:

    标签: c# .net ajax json


    【解决方案1】:

    这样做很可能是因为它知道日期来自哪个时区,所以从技术上讲,它们都代表与您的时区相关的同一时间点...

    我不完全确定你会怎么做,但是在向 UI 显示日期时,你需要覆盖格式化字符串时使用的时区。如果您可以访问该 DateTime 插件中的代码,那么我怀疑这是解决问题的地方。

    抱歉,这不是一个实用的答案;我只得到理论,因为这些天我几乎没有 JSON/AJAX 经验。

    【讨论】:

    • 几乎没有 JSON 经验,为什么要回答 Json 问题?只是增加噪音。
    • @SeanHaddy 我也回答了这个问题,我明白了这个理论。而这个“噪音”是提供的唯一答案,并被标记为选择的答案。您是否只是通过随机回答批评免费帮助?我是因为 C# 标签才来到这里的。
    猜你喜欢
    • 2018-02-27
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2015-07-27
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多