将新时区添加到 moment.js 时区
Add new timezone to moment.js timezone
我必须将 "Asia/Bangkok" (ICT) 添加到 moment.js,因为它似乎默认不支持它。
在加载 moment.js 和 moment-timezone.js 之后,我尝试在 this example:
之后定义这个特定的时区
moment.tz.add({
"zones": {
"Asia/Bangkok": [
"6:42:4 - LMT 1880 6:42:4",
"6:42:4 - BMT 1920_3 6:42:4",
"7 - ICT"
],
}
});
var currentTimeString = moment().tz('Asia/Bangkok').format('DD MMM YYYY, HH:mm:ss');
但是,我一直收到错误消息:
"Moment Timezone has no data for Asia/Bangkok. See
http://momentjs.com/timezone/docs/#/data-loading/."
知道为什么吗?
我想 post 我的解决方案,以供其他人在 moment.js...API 中苦苦挣扎 API...
要创建时区,您必须创建一个未打包的时区对象:
var unpacked = {
name : 'Asia/Bangkok',
abbrs : ['ICT'],
untils : [null],
offsets : [-420]
};
*请注意,虽然 ITC 是 UTC+7,但出于某种原因,数组中的 UTC 偏移量必须是 7*60 = 420 的加法逆(负)。*
在你可以使用它之前,你还必须打包这个对象,为此你需要包含 moment-timezone-utils.js
var packed = moment.tz.pack(unpacked);
它将吐出部分以 Base 60 编码的打包时区格式:
Asia/Bangkok|ICT|-70|0|
现在可以添加了:
moment.tz.add('Asia/Bangkok|ICT|-70|0|');
如果您不想经历所有这些麻烦,还有一个 pre-packed file on GitHub,您可以在其中选择所需的时区。
我必须将 "Asia/Bangkok" (ICT) 添加到 moment.js,因为它似乎默认不支持它。
在加载 moment.js 和 moment-timezone.js 之后,我尝试在 this example:
之后定义这个特定的时区moment.tz.add({
"zones": {
"Asia/Bangkok": [
"6:42:4 - LMT 1880 6:42:4",
"6:42:4 - BMT 1920_3 6:42:4",
"7 - ICT"
],
}
});
var currentTimeString = moment().tz('Asia/Bangkok').format('DD MMM YYYY, HH:mm:ss');
但是,我一直收到错误消息:
"Moment Timezone has no data for Asia/Bangkok. See http://momentjs.com/timezone/docs/#/data-loading/."
知道为什么吗?
我想 post 我的解决方案,以供其他人在 moment.js...API 中苦苦挣扎 API...
要创建时区,您必须创建一个未打包的时区对象:
var unpacked = {
name : 'Asia/Bangkok',
abbrs : ['ICT'],
untils : [null],
offsets : [-420]
};
*请注意,虽然 ITC 是 UTC+7,但出于某种原因,数组中的 UTC 偏移量必须是 7*60 = 420 的加法逆(负)。*
在你可以使用它之前,你还必须打包这个对象,为此你需要包含 moment-timezone-utils.js
var packed = moment.tz.pack(unpacked);
它将吐出部分以 Base 60 编码的打包时区格式:
Asia/Bangkok|ICT|-70|0|
现在可以添加了:
moment.tz.add('Asia/Bangkok|ICT|-70|0|');
如果您不想经历所有这些麻烦,还有一个 pre-packed file on GitHub,您可以在其中选择所需的时区。