2010-09-01 111 views
0

我有一个显示对象数据的页面。我正在加载对象服务器端,并通过与json的AJAX调用传递结果。有一个日期属性是对象的一部分。出于某种原因,日期正在改变。它看起来好像试图考虑我所处的时区,并从日期中减去4小时(我在美国东部时间,与格林威治标准时间差-4)。使用JSON传递日期时更改为本地时间

当我单击消息的“显示”按钮时,它会进行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” 。我不确定它为什么这样做。

回答

0

很可能这样做是因为它知道什么时区的日期是从哪里来的,所以从技术上来说,他们都表示在时间上与问候你时区相同点......

我不完全知道如何你会这样做,但是你需要重写在向UI呈现日期时格式化字符串时使用的时区。如果您有权访问该日期时间插件中的代码,那么我认为这是解决问题的地方。

对不起,它不是一个实际的答案;我只有理论,因为现在我几乎没有JSON/AJAX的经验。

+0

几乎没有JSON的经验,为什么你会回答Json问题?只是增加了噪音。 – 2012-07-06 22:02:13

+0

@SeanHaddy我也回答了我的理论。这个“噪音”是唯一的答案,并被标记为选择的答案。你是否只是随意回答批评免费帮助?我是因为C#标记而来到这里的。 – 2012-07-07 07:11:45

相关问题