2011-06-08 72 views
0

我从我的Web服务方法返回JSON对象。对象中有一些红枣等产生的JSON是这样的:使用javascript格式化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. 我可以格式化为 “2011年7月” 包含在Period领域(如072011)的日期?
  2. 如何将eval(value.BeginDate.slice(1, -1))的结果(例如“Wed July 14 ......”之类的结果)转换为“14/07/2011”之类的结果?

感谢您的帮助

+1

不要使用eval。取而代之的是使用Date.parse ... – mplungjan 2011-06-08 17:51:27

+0

您能否请您发布样本?谢谢 – Lorenzo 2011-06-09 08:52:00

+0

请看我的回答 – mplungjan 2011-06-09 09:48:58

回答

1

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> 
1

不知道你的项目的规模,但最近,我做了很多的日期和执行JavaScript的日期对象JavaScript扩展受益。这会让你的生活变得如此简单,因为它对我来说很重要,并且会照顾到上面的情景,然后再处理一些。

有一个很好的文章在这里:Javascript/Json Date Parsing

我也需要调整了一点,但因为实施这种方法不能回头了。

+0

感谢您的参考。我会马上阅读它! – Lorenzo 2011-06-09 08:52:37