【问题标题】:Moment Timezone JS return true date conversion on development but return incorrect in productionMoment Timezone JS 在开发中返回真实的日期转换,但在生产中返回不正确
【发布时间】:2020-01-23 08:31:51
【问题描述】:

我在原始时间“亚洲/雅加达”(GMT+7) 和“亚洲/东京”(JST) 之间进行了时间转换。实际相差 2 小时 (GMT+7 00:00, JST 02:00) 在开发中,它返回真实值如下:

24 Januari 2020, 00:00 GMT+7 
24 Januari 2020, 02:00 JST

但是当它上传到生产服务器(服务器放置在美国纽约)时,转换不正确。返回

24 Januari 2020, 00:00 GMT+7 
24 Januari 2020, 09:00 JST

我以为我需要设置默认时区,但错误越来越严重。并得到了

25 Januari 2020, 07:00 GMT+7
25 Januari 2020, 09:00 JST

这是我写的代码:

// calling the modules
const moment = require('moment');
const momentTz = require('moment-timezone');

//... initializing code

moment.locale('id');
moment.tz.setDefault('Asia/Jakarta');
// args[1] = '24/01'
// args[2] = '00:00'
      try {
        const timeFormat = 'Do MMMM YYYY, HH:mm';
        const dateSplit = args[1].split('/');
        const date =
          dateSplit[1] + '/' + dateSplit[0] + '/' + moment().format('YYYY');
        const dateTime = Date.parse(`${date} ${args[2]}`);
        const livestreamDateTime = moment(dateTime).format(timeFormat);
        const livestreamDateTimeJapan = momentTz
          .tz(dateTime, 'Asia/Tokyo')
          .format(timeFormat);
        const vliverFirstName = args[0].toLowerCase();
        const vData = vliver[vliverFirstName];
        const youtubeId = args[3];
// ...
// ... showing the output and catching error underneath

我输入用户输入的日期。所以当用户输入24/01 00:00时,它说日期是24 January 2020 00:00 GMT+7

编辑:我检查了生产服务器的日期。它显示了我的 GMT+7 时区。

【问题讨论】:

    标签: node.js momentjs moment-timezone


    【解决方案1】:

    解决了这个问题。

    因为时差实际上是2小时。我需要做的只是比较 2 个时区,所以我需要做的是将输入的日期和时间加上 2 小时。也不要设置默认时区

    const date = dateSplit[1] + '/' + dateSplit[0] + '/' + moment().format('YYYY');
    const dateTime = Date.parse(`${date} ${args[2]}`);
    const livestreamDateTime = moment(dateTime).format(timeFormat);
    const livestreamDateTimeJapan = moment(dateTime)
      .add(2, 'hours')
      .format(timeFormat);
    

    它仍然返回相同的时区。但我认为这没什么大不了的,因为我隐藏了时区并用硬编码字符串替换它。

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多