如何将时间从 utc 更改为 moment.js 中选择的时区?
How to get time changed from utc to the chosen timezone in moment.js?
假设我有一个约会:
"2000-01-01T01:00:00Z"
它是UTC时区。我想将时间移动到 Europe/Copenhagen
时区,这样它就是 "2000-01-01T02:00:00"
.
我想用moment-timezone
来做。但是问题是它总是使用我的本地时区(不是 Europe/Copenhagen
)。我尝试了多种方式,例如:
const date = '2000-01-01T01:00:00Z';
return moment(date).tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
但参考点仍然是我当地的时区。我根本不希望它使用我当地的时区。如何实现?
我尝试了两种选择。
The timezone is represented by the 'Z' at the end of the date
第一个像你这样的人:
moment('2000-01-01T01:00:00Z').tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
第二个比较棘手:
moment.tz('2000-01-01T01:00:00Z', 'UTC').tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
我得到:
2000-01-01T02:00:00
有了这两个选项。您使用的 moment 是什么版本?
来自您对问题的评论:
I'm in the Quatar timezone. The above code returns '2000-01-01T04:00:00' for me ...
这只会在以下情况之一发生:
无论位置如何,您实际上是从 UTC 转换为卡塔尔时区:
moment("2000-01-01T01:00:00Z").tz('Asia/Qatar').format('YYYY-MM-DDTHH:mm:ss')
//=> "2000-01-01T04:00:00"
您在卡塔尔,刚刚转换为当地时间:
moment("2000-01-01T01:00:00Z").format('YYYY-MM-DDTHH:mm:ss')
//=> "2000-01-01T04:00:00"
您已经加载了moment和moment-timezone的脚本,但是您还没有加载任何时区数据。在这种情况下,您将在调试控制台中收到一条错误消息,指出 Moment Timezone has no data for <zone name> ...
在这种情况下,时区转换不会发生,因此它的行为与上述条件中的代码相同。
不要加载 moment.timzone.js
,而是使用包含时区数据的文件之一,例如 moment-timezone-with-data-10-year-range.js
。见 these docs.
我怀疑这是最后一个。
假设我有一个约会:
"2000-01-01T01:00:00Z"
它是UTC时区。我想将时间移动到 Europe/Copenhagen
时区,这样它就是 "2000-01-01T02:00:00"
.
我想用moment-timezone
来做。但是问题是它总是使用我的本地时区(不是 Europe/Copenhagen
)。我尝试了多种方式,例如:
const date = '2000-01-01T01:00:00Z';
return moment(date).tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
但参考点仍然是我当地的时区。我根本不希望它使用我当地的时区。如何实现?
我尝试了两种选择。
The timezone is represented by the 'Z' at the end of the date
第一个像你这样的人:
moment('2000-01-01T01:00:00Z').tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
第二个比较棘手:
moment.tz('2000-01-01T01:00:00Z', 'UTC').tz('Europe/Copenhagen').format('YYYY-MM-DDTHH:mm:ss');
我得到:
2000-01-01T02:00:00
有了这两个选项。您使用的 moment 是什么版本?
来自您对问题的评论:
I'm in the Quatar timezone. The above code returns '2000-01-01T04:00:00' for me ...
这只会在以下情况之一发生:
无论位置如何,您实际上是从 UTC 转换为卡塔尔时区:
moment("2000-01-01T01:00:00Z").tz('Asia/Qatar').format('YYYY-MM-DDTHH:mm:ss') //=> "2000-01-01T04:00:00"
您在卡塔尔,刚刚转换为当地时间:
moment("2000-01-01T01:00:00Z").format('YYYY-MM-DDTHH:mm:ss') //=> "2000-01-01T04:00:00"
您已经加载了moment和moment-timezone的脚本,但是您还没有加载任何时区数据。在这种情况下,您将在调试控制台中收到一条错误消息,指出
Moment Timezone has no data for <zone name> ...
在这种情况下,时区转换不会发生,因此它的行为与上述条件中的代码相同。
不要加载
moment.timzone.js
,而是使用包含时区数据的文件之一,例如moment-timezone-with-data-10-year-range.js
。见 these docs.
我怀疑这是最后一个。