如何在Moment.js中添加IST时区对象

5

我指的是http://momentjs.com/timezone/docs/#/using-timezones/

例如,它提供了以下位置的示例:

moment.tz.add([
    'America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0',
    'America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'
]);

我不确定IST值是什么,因为它是针对以下内容给出的:

{
    name    : 'America/Los_Angeles',          // the unique identifier
    abbrs   : ['PDT', 'PST'],                 // the abbreviations
    untils  : [1414918800000, 1425808800000], // the timestamps in milliseconds
    offsets : [420, 480]                      // the offsets in minutes
}

有人能帮忙将IST对象添加到这个代码中吗?

1个回答

30
最简单的方法是使用moment-timezone首页中包含时区数据的文件之一,例如moment-timezone-2010-2020.jsmoment-timezone-all-years.js(或缩小版本)。
但如果你愿意,也可以添加单个时区。你可以在上面列出的数据文件中找到该时区的压缩字符串。对于印度,完整的时区定义如下:
moment.tz.add("Asia/Calcutta|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0");
moment.tz.link("Asia/Calcutta|Asia/Kolkata");

根据您所做的具体工作,您可能需要或不需要链接。

请注意,我假设“IST”是指印度标准时间,而不是爱尔兰标准时间或以色列标准时间。当然,这些时区的数据会有所不同。

此外,自1942年以来,印度一直处于UTC+5:30,您可能只想使用固定偏移量-这将消除使用moment-timezone的必要性。只需在moment中使用utcOffset函数。例如,以下两个示例将返回印度的当前时间。

moment().utcOffset("+05:30").format()

或者

moment().utcOffset(330).format()

Matt,你能否也看一下http://stackoverflow.com/questions/32267362/disabling-the-timezone-conversion-in-extjs/?上述问题只是为了解决问题的一个变通方法,我认为应该有更好的方法来解决这个问题。谢谢! - Snehal Masne
2
我对ExtJS了解不够,无法回答这个问题,但我也不明白它与此有何关联。如果您已经有一个基于UTC的时间戳,请使用moment.utc(timestamp)将其加载到moment中,并按所需格式进行格式化。无需处理时区转换。 - Matt Johnson-Pint
@MattJohnson-Pint 你如何从 +05:30 中获取 330 的值? - Rijo
1
@Rijo - (5 * 60) + 30 (5小时,每小时60分钟,再加上30分钟) - Matt Johnson-Pint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接