【发布时间】:2020-12-09 20:36:29
【问题描述】:
好的,我有一个奇怪的问题。我刚开始使用 Node 和 MongoDB,起初我对整个 ISO 时间与本地时间有点混淆,我遇到了一个奇怪的问题。
我得到了一个带日期的字符串,虽然它有点矫枉过正,但我手动将其拆分并传递给“new Date()”构造函数,它会将所有日期添加一个月。
这是我的代码:
str = str.split(' ')
str[0] = str[0].split('-')
str[1] = str[1].split(':')
console.log(str)
str = new Date(str[0][0],str[0][1],str[0][2],str[1][0],str[1][1],str[1][2]);
console.log(str)
console.log(str.toString())
这是输出:
[ [ '1970', '01', '01' ], [ '00', '00', '00' ] ] //First UNIX date splitted into a yyyy, mm, dd, HH, MM, DD
1970-02-01T03:00:00.000Z //After the Date object is generated, note that the month is now "02"
Sun Feb 01 1970 00:00:00 GMT-0300 (hora de verano de Chile) //The date returned to local time. Note that the month change was maintained.
我在更改类型时做错了吗?是不是和代码无关?
整个目的是将Date对象插入到ISO格式的mongodb集合中,然后查询回来,并以当地时间显示。
【问题讨论】:
-
Date类的月份从零开始。一月是0。因此,如果您在1的一个月内通过,您就是在告诉日期是 2 月。
标签: javascript node.js mongodb datetime