0

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

"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 中的 dateOfAction,带有右偏移

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

我怎样才能做到这一点?

4

1 回答 1

0

一些东西:

  • Moment 不会将Ztoken 映射到 string "UTC"。由于您在本地模式下进行解析,因此您实际上是根据本地计算机的时区而不是 UTC 获得的。因此,将代码的第一部分更改为:

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

    方括号将 UTC 视为文字字符串,这不是严格要求的,因此您可以根据需要省略它,结果将相同。

    moment.utc(dateOfLoss, 'YYYY-MM-DD HH:mm')
    
  • .tz(userTimezone)如果您只是要.unix()随后打电话,则无需打电话。Unix 时间戳始终基于 UTC。虽然不清楚你为什么要一个 Unix 时间戳,因为 react-datetime 不需要一个。

  • 您在问题的最后一段中给出的两个值是相同的,所以我不确定您具体在寻找什么。你给的时间确实是1542783600,不是1542776400

  • react-datetime 的自述文件描述了您可以使用的所有选项。您可以简单地将上面获得的时刻对象传递给value道具。如果你想改变行为,你可能需要使用utcor道具。displayTimeZone在传递它之前,您可能还需要调用.local()or .tz(userTimezone)on the moment 对象,但我不确定这个特定组件是否需要这样做。

于 2018-12-04T17:04:29.750 回答