gpt4 book ai didi

javascript - 如何告诉 JavaScript Date 从哪里获取 TimezoneOffset?

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:48 25 4
gpt4 key购买 nike

我正在使用new Date(<date-string>)然后.getTime()将日期字符串传递为 1970 年以来的毫秒数。

问题是日期字符串不包含时区。他们是英国人,所以时区将是 GMT 或 GMT+1,具体取决于日期...

当我在前端 (Chrome) 或后端 (Node.js) 中使用此技术时。所采用的时区是英国时区(GMT 或 GMT+1,具体取决于日期)。我假设这是从操作系统中获取的。

但是,当使用 Node.js 服务器时,我被告知配置为 UTC...时区始终为 GMT,导致英国夏令时出现错误。

有什么办法可以告诉Date在不更改服务器配置的情况下从操作系统获取时区?

示例:

var aDate = new Date('2016-06-23 10:15:0');
var timestamp = aDate.getTime();

以防万一我的解释不清楚:

// Executed on 28-06-2016

// In the browser (in London)
new Date().getTimezoneOffset(); // -60
new Date('28-06-2016 11:11:11').getTimezoneOffset(); // -60
new Date('28-01-2016 11:11:11').getTimezoneOffset(); // 0

// In the Node.js server I am forced to use, which is configured to use UTC
new Date().getTimezoneOffset(); // 0
new Date('28-06-2016 11:11:11').getTimezoneOffset(); // 0
new Date('28-01-2016 11:11:11').getTimezoneOffset(); // 0

// Ideally, I would like to have the output I get in the browser when I run the code in the UTC Node.js server

最佳答案

我建议使用Moment Timezone为此,因为如果没有库,实现起来会变得不必要的复杂。要获取给定时区中给定日期的 UTC(以毫秒为单位),您可以执行以下操作:

const moment = require('moment-timezone');

function londonTimeToUTC(dateString) {
return moment.tz(dateString, 'DD-MM-YYYY HH:mm:ss', 'Europe/London').valueOf();
}

console.log(londonTimeToUTC('28-06-2016 11:11:11')); // 1467108671000
console.log(londonTimeToUTC('28-01-2016 11:11:11')); // 1453979471000

传递给 moment.tz() 的第二个参数是 format string ,如果日期字符串不在 ISO format 中,则这是必需的。第三个参数是任何有效的 timezone identifier .

关于javascript - 如何告诉 JavaScript Date 从哪里获取 TimezoneOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077862/

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