小编典典

如何格式化Microsoft JSON日期?

ajax

我正在使用jQuery在Ajax上进行首次尝试。我正在将数据获取到页面上,但是为Date数据类型返回的JSON数据遇到了一些麻烦。基本上,我得到的字符串看起来像这样:

/Date(1224043200000)/

从完全不熟悉JSON的人-
如何将其格式化为短日期格式?是否应该在jQuery代码中的某个地方处理?我尝试jQuery.UI.datepicker使用该插件$.datepicker.formatDate()没有成功。

仅供参考:这是我结合以下答案使用的解决方案:

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;
}

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


阅读 441

收藏
2020-07-26

共1个答案

小编典典

eval()没有必要。这将正常工作:

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

substr()函数取出该/Date(部分,然后该parseInt()函数获取整数并)/在最后忽略。结果数将传递到Date构造函数中。


我故意省略了基数(的第二个参数parseInt);

另外,我完全同意Rory的评论:ISO-8601日期优于此旧格式-
因此,通常不应该将这种格式用于新开发。有关使用ISO-8601格式序列化日期的绝佳选择,请参见出色的Json.NET库。

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

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