在 Node.js 中向 javascript Date 添加分钟数

Adding minutes to a javascript Date in Node.js

本文关键字:添加 分钟 Date javascript Node js 中向      更新时间:2023-09-26

我在 Node.js 的 javascript 中添加日期时遇到问题。我有一个日期对象,bt_time = new Date()

bt_time.toString()
"Mon Mar 07 2016 03:30:10 GMT+0000 (UTC)"

以下操作尝试将 5 分钟添加到 中,结果如下

bt_time + (60*1000*5)
"Mon Mar 07 2016 03:30:10 GMT+0000 (UTC)300000"
new Date(bt_time + (60*1000*5)).toString()
"Mon Mar 07 2016 03:30:10 GMT+0000 (UTC)"
new Date(bt_time) + (60*1000*5)
"Mon Mar 07 2016 03:30:10 GMT+0000 (UTC)300000"

似乎 + (60*1000*5) 只是在日期字符串的末尾加上 300000,而不是增加时间。当我尝试减法时,我没有同样的问题。

我需要日期算术才能迭代几天的跨度,一次 5 分钟。

回复:

I don't have the same issue when I attempt subtraction

因为减法运算符-强制其操作数为 Number,因此:

bt_time - (60*1000*5)

实际上:

bt_time.getTime() - 300000

这将创建一个数字(表示自 ECMAScript 纪元以来的毫秒),其值比 bt_time 的时间值小 300,000

已经回答了,但为了完整起见:

但是,加法运算符+是重载的,因此:

bt_time + (60*1000*5)

脚本引擎必须确定它是否意味着加法、串联或强制到数字(+一元运算符)。默认情况下,Date 对象强制转换为字符串,因此+充当串联运算符,正如 Daishi Nakajima 所说,它实际上是:

bt_time.toString() +  300000

bt_time object类型。 bt_time + i意味着bt_time.toString() + i

正确的是

new Date(bt_time.getTime() + 60*1000*5).toString();
// or
bt_time.setMinutes(bt_time.getMinutes() + 5);

我推荐 moment.js 在 nodejs 中

moment().add(5, 'minutes').toDate();