【发布时间】: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”。我不确定它为什么会这样。
【问题讨论】: