我从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))
的结果(例如"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日期解析
我确实需要对它进行一点调整,但自从实现这种方法以来,我就没有回头看了。