我确定这是一个简单的问题,但我不能为我的生活解决它。
我有一个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"
}
我想将提醒JS中的日期解析为循环中的日期对象,如此。
for (var i = userSchedule.reminders.length - 1; i >= userSchedule.reminders.length - 1; i++)
{
var date = new Date(userSchedule.reminders[i]);
}
但只要我记录它就会显示无效的日期。有什么想法吗?
答案 0 :(得分:4)
虽然没有回答,但为什么你使用了 user_schedule.reminders
和userSchedule.reminders
而你的for循环只会循环一次正确的数据,因为你的循环以 i = 3开始; 这是userSchedule.reminders[3]
的最后一个元素的索引,当你接下来循环时,它将超出你的数组提醒的范围
答案 1 :(得分:1)
对于日期时间操作我强烈建议您使用http://momentjs.com
你可以做什么
moment("your date string")
或
moment("your date string","your date format")
答案 2 :(得分:1)
这里的东西并不像看起来那样,因为在Chrome和Node.JS中调用日期构造函数会为我返回正确的日期。我也在下面的JSBin中尝试过它。
https://jsbin.com/fomagugiwe/edit?html,output
我会将值记录到日期构造函数中,只是为了确保使用的值具有正确的格式。您是否还可以提供此脚本用于进一步测试的节点版本..
答案 3 :(得分:0)
您的循环已损坏,您似乎正在尝试从0
迭代到userSchedule.reminders.length - 1
,因此:
for (var i=0; i < userSchedule.reminders.length; i++) {
// do stuff
}
此外,由于实现的差异,不推荐使用Date构造函数(和Date.parse,它们等效进行解析)解析日期字符串。您应该手动解析字符串,如果只有一种格式需要解析,库可以提供帮助,但不是必需的。
像“2014-03-12T12:00:00”这样的日期字符串应该被视为“本地”(即在计算时间值时应该使用主机时区偏移量),但并非所有实现都会这样做。像fecha.js这样的小型图书馆很简单:
var d = fecha.parse('2014-03-12T12:00:00','YYYY-MM-DDTHH-mm-ss');
您也可以使用moment.js,但这可能会因您需要而过度杀伤。还有许多其他适用的解析和格式化库也适用。