我将用jQuery首次尝试Ajax。我正在将数据放到页面上,但对于Date数据类型返回的JSON数据,我遇到了一些问题。基本上,我得到的字符串是这样的:

/Date(1224043200000)/

从一个对JSON完全陌生的人那里——我如何将其格式化为短日期格式?这应该在jQuery代码中的某个地方处理吗?我使用$.datepicker.formatDate()尝试了jQuery.UI.datepicker插件,但没有成功。

仅供参考:以下是我使用以下答案组合得出的解决方案:

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

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


当前回答

不要重复自己的操作-使用$.parseJSON()自动进行日期转换

帖子的答案提供了手动日期转换为JavaScript日期。我对jQuery的$.parseJSON()进行了一点点扩展,因此它能够在您指示时自动解析日期。它处理ASP.NET格式的日期(/Date(12348721342)/)以及ISO格式的日期,这些日期由浏览器中的原生JSON函数(以及json2.js等库)支持。

无论如何如果你不想一次又一次重复你的日期转换代码,我建议你阅读这篇博客文章,并获得代码,这将使你的生活更轻松。

其他回答

var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

是否还有其他不使用jQuery库的选项?

检查ISO标准的日期;有点像这样:

yyyy.MM.ddThh:mm

日期为2008.11.20T22:18。

不要想得太多。像我们几十年来所做的那样,从1970年1月1日午夜GMT/UTC/&c这一事实上的标准时间开始,以秒(或毫秒)为单位传递一个数字偏移量。JavaScript喜欢它,Java喜欢它,C喜欢它,互联网喜欢它。

您可以使用它从JSON获取日期:

var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));

然后,您可以使用JavaScript日期格式脚本(缩小和gzip时为1.2 KB)按您的需要显示它。

我可以建议的最简单的方法是在JS上使用正则表达式:

//Only use [0] if you are sure that the string matches the pattern
//Otherwise, verify if 'match' returns something
"/Date(1512488018202)/".match(/\d+/)[0]