我正在从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);
});


现在的问题:


我可以将Period字段中包含的日期(例如072011)格式化为“ 2011年7月”吗?
我如何将eval(value.BeginDate.slice(1, -1))的结果转换为“ 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>

10-05 20:41
查看更多