【问题标题】:Formatting a JSON Date with javascript使用 javascript 格式化 JSON 日期
【发布时间】:2011-06-08 17:41:25
【问题描述】:

我正在从我的 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”之类的结果?

感谢您的帮助

【问题讨论】:

  • 不要使用 eval。而是使用 Date.parse...
  • 你能发个样本吗?谢谢

标签: javascript jquery json datetime date-format


【解决方案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>

【讨论】:

    【解决方案2】:

    不确定您项目的规模,但我最近在日期方面做了很多工作,并通过在 javascript Date 对象上实现 javascript 扩展而受益。这将使您的生活变得更加轻松,就像对我一样,并且会处理上述情况,然后处理一些情况。

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

    我确实需要稍微调整一下,但自从实施这种方法后就没有回头。

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多