gpt4 book ai didi

javascript - 如何考虑时区创建 JS 日期对象 Node.js/javascript

转载 作者:行者123 更新时间:2023-12-03 07:18:36 24 4
gpt4 key购买 nike

嗨,我正在使用 node.js 和 kue ,我想将工作推迟到 future 的时间,我所做的就是传递一个像这样的 js 日期对象

var today=new Date();
today.setHours(23,00,00);

var email = queue.create('email', {
title: 'Account renewal required'
, to: 'tj@learnboost.com'
, template: 'renewal-email'
}).delay(today)
.priority('high')
.save();

这工作正常,但作业在上午 7 点触发,这是因为我的时区是 UTC + 8 ,所以该日期的默认时区是 UTC 。

所以

我尝试使用 moment-timezone Node.js 的模块并执行类似的操作。

var today = moment().tz("Asia/Hong_Kong").toDate();
today.setHours(23,00,00);

var email = queue.create('email', {
title: 'Account renewal required'
, to: 'tj@learnboost.com'
, template: 'renewal-email'
}).delay(today)
.priority('high')
.save();

但是我发现当你使用toDate()时它会忽略时区,所以我被困在这里,我搜索了很多两天但找不到解决方案。

有什么方法可以实现这一点,请帮助我,提前致谢。

最佳答案

我想你已经回答了你的问题,但要明确一点:你的主机在 UTC 上运行,偏移量为零,你的本地时间是 UTC+08:00,你想要下次的日期是 23 :00 本地。

在这种情况下,您想要 15:00Z 的日期。因此,如果当前 UTC 小时小于 15,请将其设置为 15。否则,将其设置为 24 + 15,以便明天为 15:00,例如

var now = new Date();
now.setHours((now.getHours() < 15? 15 : 39), 0,0,0);

这样您就可以一次性完成日期和时间。但这假设主机设置为 UTC。

关于javascript - 如何考虑时区创建 JS 日期对象 Node.js/javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com