Javascript 矩JS解析整个JSON数组并格式化多个日期实例

Javascript 矩JS解析整个JSON数组并格式化多个日期实例,javascript,asp.net-mvc,date,momentjs,Javascript,Asp.net Mvc,Date,Momentjs,我从我的MVC控制器得到一个JSON对象数组,这些对象有两个日期字段,我要对它们进行解析和格式化 我已经用优秀的Newtonsoft.JSON库替换了默认的MVC JSON serialiser,因此我的日期格式已经相当好了,并返回如下: "SystemDate": "2013-05-06T17:19:40.443", "LocalDate": "2013-05-06T18:19:40", 我在客户端使用momente.js来处理日期,我一直在寻找一个简洁的解决方案来进一步格式化这些日期,以便

我从我的MVC控制器得到一个JSON对象数组,这些对象有两个日期字段,我要对它们进行解析和格式化

我已经用优秀的Newtonsoft.JSON库替换了默认的MVC JSON serialiser,因此我的日期格式已经相当好了,并返回如下:

"SystemDate": "2013-05-06T17:19:40.443",
"LocalDate": "2013-05-06T18:19:40",
我在客户端使用momente.js来处理日期,我一直在寻找一个简洁的解决方案来进一步格式化这些日期,以便在UI中显示

我正要开始编写一个自定义函数,该函数将采用带有日期的JSON对象数组进行格式化,并采用日期模式和字段名数组进行格式化

函数签名看起来像:

function formatDates(dataArray, pattern, fields) { /code/ };
[{"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"
dataArray类似于:

function formatDates(dataArray, pattern, fields) { /code/ };
[{"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"
模式将类似于:

function formatDates(dataArray, pattern, fields) { /code/ };
[{"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"
字段列表将是(使用上述示例对象):

我才刚刚开始使用Moment.js,所以我对它自己的API不是特别熟悉,但从这里可以看出,它的代码库中已经存在这种功能


在我开始使用这个工具之前,我想知道Moment.js中是否已经有什么东西可以帮我处理这个问题?或者任何关于如何最好地实现此功能的指针?

这不是我所期望的日期操纵库。这实际上取决于您对数据进行解码,执行迭代以查找日期,然后利用时间进行日期匹配,最后,您将数据重新编码回所需的格式。这就是说,看你想要什么似乎是一个非常琐碎的任务

像这样的东西应该适合你

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);

上,我尝试将其添加到我的代码中,它生成了一个脚本错误“SyntaxError:JSON.parse:unexpected character”jsFiddle确实已损坏。即使将moment.min.js作为外部资源引用,它也无法正常工作。谢谢你的帮助。我用Chromium v25、Firefox v20和Opera v12.14对JSFIDLE进行了三次检查,它们都是第一次工作,没有任何问题。我所能想到的是,您使用的是一些旧浏览器进行测试,而这里您可能会遇到问题,因为上面的演示需要JSON和Array.map支持,您可以使用许多可用的垫片之一将其添加到旧浏览器中。对于JSON:和对于ES5: