1

我从 MVC 控制器返回一组 JSON 对象,这些对象有几个我要解析和格式化的日期字段。

我已经用优秀的 Newtonsoft.Json 库替换了默认的 MVC JSON 序列化程序,所以我的日期已经很好地格式化并像这样返回:

"SystemDate": "2013-05-06T17:19:40.443",
"LocalDate": "2013-05-06T18:19:40",

我在客户端使用 Moment.js 进行日期处理,我一直在寻找一种简洁的解决方案来进一步格式化这些日期以在 UI 中显示。

我正要开始编写一个自定义函数,它需要一个 JSON 对象数组,其中包含要格式化的日期、一个日期模式和一个要格式化的字段名称数组。

函数签名看起来像:

function formatDates(dataArray, pattern, fields) { /code/ };

dataArray 将类似于:

[{"name": Jammer, 
  "SystemDate": "2013-05-06T17:19:40.443", 
  "LocalDate": "2013-05-06T18:19:40"
 }, 
 {another object}
 {another object} 
 {another object}
]

模式将类似于:

"dddd, MMMM Do YYYY, h:mm:ss a"

字段列表将是(使用上面的示例对象):

[{"SystemDate"}, {"LocalDate"}]

我才刚刚开始使用 Moment.js,所以我对它自己的 API 并不是特别熟悉,但是从查看文档来看,没有任何迹象表明它的代码库中已经存在这种功能。

在我开始实施之前,我想知道 Moment.js 中是否已经有一些东西可以为我处理这个问题?或有关如何最好地实现此功能的任何指示?

4

1 回答 1

0

这不是我对日期操作库的期望。解码数据,执行迭代以查找日期,然后使用时刻进行日期格式化,最后,您将数据重新编码回您需要的形式,这完全取决于您。也就是说,查看您想要的内容似乎是一项非常微不足道的任务。

这样的事情应该为你做

javascript

var jsonString = '[{"name":"Jammer0","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer1","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer2","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer3","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"}]';

var formatted = JSON.stringify(JSON.parse(jsonString).map(function (record)  {
    var requiredPattern = "dddd, MMMM Do YYYY, h:mm:ss a";

    record.SystemDate = moment(record.SystemDate).format(requiredPattern);
    record.LocalDate = moment(record.LocalDate).format(requiredPattern);

    return record;
}));

console.log(formatted);

jsfiddle 上

于 2013-05-11T10:51:50.310 回答