gpt4 book ai didi

javascript - 使用 Javascript 获取时区名称的时区偏移量

转载 作者:行者123 更新时间:2023-12-03 22:51:56 24 4
gpt4 key购买 nike

我发现许多解决方案可以根据偏移值给出时区名称。但我有时区名称,我想要它的偏移值。我尝试了 setTimezone('Asia/Kolkata'),但我认为他们没有像 setTimezone 这样的方法。

示例:

Asia/Kolkata should give me -330 ( offset )

最佳答案

这是使用现代 JavaScript 完成此任务的最简单方法。

注意:请记住,偏移量取决于夏令时 (DST) 是否处于事件状态。

/* @return A timezone offset in minutes */
const getOffset = (timeZone = 'UTC', date = new Date()) => {
const utcDate = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' }));
const tzDate = new Date(date.toLocaleString('en-US', { timeZone }));
return (tzDate.getTime() - utcDate.getTime()) / 6e4;
}

console.log(`No arguments: ${getOffset()}`); // 0

{
console.log('! Test Case #1 >> Now');
console.log(`Asia/Colombo : ${getOffset('Asia/Colombo')}`); // 330
console.log(`America/New_York : ${getOffset('America/New_York')}`); // -240
}

{
console.log('! Test Case #2 >> DST : off');
const date = new Date(2021, 0, 1);
console.log(`Asia/Colombo : ${getOffset('Asia/Colombo', date)}`); // 330
console.log(`America/New_York : ${getOffset('America/New_York', date)}`); // -300
}

{
console.log('! Test Case #3 >> DST : on');
const date = new Date(2021, 5, 1);
console.log(`Asia/Colombo : ${getOffset('Asia/Colombo', date)}`); // 330
console.log(`America/New_York : ${getOffset('America/New_York', date)}`); // -240
}
.as-console-wrapper { top: 0; max-height: 100% !important; }

关于javascript - 使用 Javascript 获取时区名称的时区偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21327371/

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