格式化JS中的datestring

我确信这是一个简单的问题,但是我不能为了我的生活而解决它。

我有一个JSON对象,如下所示:

{ "_id": { "$oid": "57cb5aac9bd9a31100c793d1" }, "reminders": [ "2014-03-12T12:00:00", "2014-03-12T13:37:27", "2014-03-12T13:37:27", "2014-03-12T22:14:27" ], "user": "xxx" } 

我想parsingdate从提醒是JS到循环中的date对象,因此。

 for (var i = userSchedule.reminders.length - 1; i >= userSchedule.reminders.length - 1; i++) { var date = new Date(userSchedule.reminders[i]); } 

但是,只要我login它就显示无效的date。 有任何想法吗?

这里的东西并不像看起来那样,因为在Chrome和Node.JS中调用date构造函数都会为我返回正确的date。 我也在下面的JSBin中试过。

https://jsbin.com/fomagugiwe/edit?html,output

我会logging进入date构造函数的值,只是为了确保使用的值是正确的格式。 您还可以提供您正在使用此脚本进行进一步testing的节点版本..

尽pipe它没有回答,但为什么你使用了user_schedule.remindersuserSchedule.reminders ,你的for循环只会用正确的数据循环一次,因为你的循环以i = 3开始; 这是userSchedule.reminders[3]最后一个元素的索引,而当你循环下一步时,它将超出数组提醒的范围

对于date时间操纵我强烈build议使用http://momentjs.com

你可以做的地方

 moment("your date string") 

要么

 moment("your date string","your date format") 

你的循环坏了,看来你试图从0迭代到userSchedule.reminders.length - 1 ,所以:

 for (var i=0; i < userSchedule.reminders.length; i++) { // do stuff } 

此外,由于实现中的差异,不build议使用Date构造函数(和Date.parse,它们等同于parsing)来parsingdatestring。 你应该手动parsingstring,一个库可以帮助但不是必要的,如果你只有一个格式parsing。

像“2014-03-12T12:00:00”这样的datestring应该被视为“本地”(即计算时间值时应使用主机时区偏移量),但不是所有的实现都会这样做。 像fecha.js这样的小型图书馆很简单:

 var d = fecha.parse('2014-03-12T12:00:00','YYYY-MM-DDTHH-mm-ss'); 

你也可以使用moment.js ,但它可能是矫枉过正的。 还有许多其他parsing和格式化库也可用。