问题

我使用jQuery在 Ajax 上执行我的第一个破解.我收到我的数据到我的页面,但我有一些麻烦的JSON数据为Date数据类型返回.基本上,我得到一个字符串回,看起来像这样:

/Date(1224043200000)/

从全新的JSON - 我如何格式化为短日期格式?这应该在jQuery代码的某个地方处理?我试过 jQuery.UI.datepicker 插件使用 $.datepicker.formatDate()没有任何成功.

FYI:这是我想出的解决方案,结合使用这里的答案:

function getMismatch(id) {
  $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
      $("#AuthMerchId").text(result.AuthorizationMerchantId);
      $("#SttlMerchId").text(result.SettlementMerchantId);
      $("#CreateDate").text(formatJSONDate(Date(result.AppendDts)));
      $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts)));
      $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts)));
      $("#LastUpdatedBy").text(result.LastUpdateNt);
      $("#ProcessIn").text(result.ProcessIn);
    }
  );

  return false;
}

function formatJSONDate(jsonDate) {
  var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
  return newDate;
}

此解决方案从回调方法获取了我的对象,并使用日期格式库正确地在页面上显示日期.



解决方法

Eval不是必需的.这将工作很好:

var date = new Date(parseInt(jsonDate.substr(6)));

substr函数取出"/ Date("部分,parseInt函数获取整数,忽略"/)".结果数会传递到Date构造函数中.

编辑:我有意留出基数(parseInt的第二个参数);请参阅我在下面的评论.此外,我完全同意 Rory的意见:ISO-8601日期优先于此旧格式 - 因此此格式通常不应用于新开发.查看优秀的 Json.NET 库,可以使用ISO-8601格式序列化日期. p>

对于ISO-8601格式的JSON日期,只需将字符串传递给Date构造函数:

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support



相关问题推荐