代码之家  ›  专栏  ›  技术社区  ›  Chen

日期操纵瞬间.js

  •  0
  • Chen  · 技术社区  · 5 年前

    我从服务器收到以下日期:

    "2018-11-21 07:00:00 UTC"

    然后,我用 userTimzone 变量(因为我希望编辑器使用用户时区):

    dateOfAction: moment(dateOfLoss, 'YYYY-MM-DD HH:mm Z').tz(userTimzone).unix() ,所以 dateOfAction 1542776400 . 即: Wednesday, November 21, 2018 5:00:00 AM -到目前为止还不错。这是UTC中带有右后偏移量的操作日期

    react-datetime 作为日历,使用UTC编辑日期。 在执行 save 行动, 触摸日期,日历输出仍然是 1542783600 1542783600 -即与开始时相同的值,在另一个方向恢复偏移。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Matt Johnson-Pint    5 年前

    • 时刻不代表未来 Z 字符串的标记 "UTC" . 因为您是在本地模式下解析,所以实际上您得到的是基于本地计算机时区而不是UTC的时刻。因此,将代码的第一部分更改为:

      moment.utc(dateOfLoss, 'YYYY-MM-DD HH:mm [UTC]')
      

      moment.utc(dateOfLoss, 'YYYY-MM-DD HH:mm')
      
    • 没必要打电话 .tz(userTimezone) .unix() 随后。Unix时间戳始终基于UTC。尽管还不清楚为什么需要Unix时间戳,因为react datetime不需要时间戳。

    • 你在问题的最后一段给出的两个值是相同的,所以我不确定你具体想要什么。你给的时间真的是 1542783600 ,不是 1542776400 .

    • The readme file of react-datetime 描述可以使用的所有选项。您只需将上面获得的力矩对象传递给 value 道具。你可能需要使用 utc displayTimeZone .local() .tz(用户时区) 但我不确定这个组件是否需要。