我需要在以 UTC 时间运行的服务器上触发基于时间的事件。
在我的 UI 中,我接受 2 个参数
我更喜欢不显示时区名称,因为它会延迟页面呈现,我相信它是不需要的。
我检查了时刻库,但看不到如何从时区偏移中获取时区名称。 API
moment.tz.names()
返回所有时区。有没有返回的API,比如说
moment.tz.name('330') = 'Asia/Kolkata'
另外,如果有解决方案,是否会解决 DST 问题
最佳答案
因此,任何特定偏移量总是/经常有多个名称,因此没有 moment.tz.name('offset') = 'Country/Zone'
我知道的api。
但是,您可以使用简单的过滤器函数根据偏移量获取所有名称的数组
const moment = require('moment-timezone');
const getZoneFromOffset = offsetString => moment.tz.names().filter(tz => moment.tz(tz).format('Z') === offsetString)
console.log(getZoneFromOffset("+05:30"))
// [ 'Asia/Calcutta', 'Asia/Colombo', 'Asia/Kolkata' ]
在上面的示例中,我使用了 "+05:30"
对于与您的用例 330 不 100% 匹配的偏移值,但它演示了如何解决该问题。您还可以获取所有时区名称及其偏移量的数组,例如 moment.tz.names() 上的简单 map const getZoneObjects = () => moment.tz.names().map(zone => ({ zone, offset: moment.tz(zone).format('Z') }))
/*
[
{ zone: 'Africa/Abidjan', offset: '+00:00' },
{ zone: 'Africa/Accra', offset: '+00:00' },
{ zone: 'Africa/Addis_Ababa', offset: '+03:00' },
...
*/
上面的例子使用 Z
作为时区格式,但如果 "+5:30"
不符合你的需求可以看https://devhints.io/moment查看您可以使用的其他格式,例如 ZZ
这将是 "+0530"
在您的用例中。
关于javascript - 从javascript中的偏移量获取时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420441/