如何在moment.js中将时间从utc更改为所选时区?

假设我的约会日期为:

"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');

但是参考点仍然是我的本地时区。我根本不希望它使用我的本地时区。如何实现?

conqueror_nannan 回答:如何在moment.js中将时间从utc更改为所选时区?

我尝试了两种选择。

  

时区在日期末尾用“ Z”表示

第一个喜欢你的人

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

有两个选项。您使用的即时通讯的版本是什么?

,

在您对问题的评论中:

  

我在Quatar时区。上面的代码为我返回了“ 2000-01-01T04:00:00” ...

这只会在以下情况之一下发生:

  • 无论位置如何,您实际上是从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 Timezone has no data for <zone name> ...

    在这种情况下,无法进行时区转换,因此其行为与上述条件中的代码相同。

    请使用包含时区数据的文件之一,例如moment.timzone.js,而不是加载moment-timezone-with-data-10-year-range.js。参见these docs

我怀疑这是最后一个。

本文链接:https://www.f2er.com/3111712.html

大家都在问