使用javascript格式化JSON日期



我从web服务方法返回一个JSON对象。对象中有一些日期,因此生成的JSON如下所示:

{"d": [
    {"PeriodID":8,"Period":"072011","BeginDate":"/Date(1294268400000)/"},
    {"PeriodID":2,"Period":"052011","BeginDate":"/Date(1293836400000)/"}
]}

我正在尝试将此数据转换为字符串,以添加为HTML选择中的<option>元素。这是我的代码:

var rtypes = data.d;
$.each(rtypes, function (key, value) {
    var text = value.Period + " - " + "from " + eval(value.BeginDate.slice(1, -1));
    var option = $("<option></option>").attr("value", value.PeriodID).text(text);
    $('#rpCombo').append(option);
});

现在的问题是:

  1. 我可以将Period字段中包含的日期(例如072011)格式化为"2011年7月"吗
  2. 如何将eval(value.BeginDate.slice(1, -1))的结果(例如"Wed July 14……")转换为"14/07/2011"

感谢您帮助

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse

例如

// create 1 of June 2011 from Jun 2011
var period = new Date(Date.parse("1 "+period)); 

这是我想你想要的

<script>
var months = ["Jan","Feb","Mar","Apr","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
var result = {"d": [
    {"PeriodID":8,"Period":"072011","BeginDate":1294268400000},
    {"PeriodID":2,"Period":"052011","BeginDate":1293836400000}
]}

var aPeriod, period, periodMM, periodYYYY, periodText, beginDate, beginMM, beginDD;
for (var i=0,n=result.d.length;i<n;i++) {
  aPeriod = result.d[i];
//  period = new Date(aPeriod.Period.slice(2),aPeriod.Period.slice(0,2)-1,1,0,0,0);
//  periodText = months[period.getMonth()]+" "+period.getFullYear();
  periodMM = parseInt(aPeriod.Period.slice(0,2),10);
  periodYYYY = aPeriod.Period.slice(2);
  periodText = months[periodMM]+" "+periodYYYY;
  beginDate = new Date(aPeriod.BeginDate);      
  beginDD = beginDate.getDate();
  if (beginDD<10) beginDD="0"+beginDD;
  beginMM = beginDate.getMonth()+1;
  if (beginMM<10) beginMM="0"+beginMM;
  periodText += " "+beginDD+"/"+beginMM+"/"+beginDate.getFullYear();
  alert(periodText)     
}
</script>

不确定您的项目规模,但我最近在日期方面做了很多工作,并通过在javascript Date对象上实现javascript扩展而受益。这将使你的生活变得像我一样轻松,并将解决上述情况和一些问题。

这里有一篇非常好的文章:Javascript/Json日期解析

我确实需要对它进行一点调整,但自从实现这种方法以来,我就没有回头看了。

相关内容

  • 没有找到相关文章

最新更新