在JS中格式化字符串到日期

Formatting String to Date in JS

本文关键字:日期 字符串 格式化 JS      更新时间:2023-09-26

我知道这是一个简单的问题,但是我怎么也解决不了。

我有一个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]);
    }

但它只是显示无效的日期,每当我记录它。什么好主意吗?

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

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

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

输出

我将记录进入日期构造函数的值,以确保所使用的值具有正确的格式。您是否还可以提供用于此脚本的Node版本以供进一步测试…

对于日期时间操作,我强烈建议使用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
}

同样,使用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,但对于您需要的东西来说,它可能有点过头了。还有许多其他适合的解析和格式化库。