我从服务器收到以下日期:
"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
-即与首先,将偏移量恢复到另一个方向。
我该如何实现?
答案 0 :(得分:0)
几件事:
时刻不会将Z
令牌映射到字符串"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
。
The readme file of react-datetime描述了您可以使用的所有选项。您可以简单地将上面获得的力矩对象传递给value
道具。如果要更改行为,可能需要使用utc
或displayTimeZone
道具。在传递对象之前,您可能还需要在矩对象上调用.local()
或.tz(userTimezone)
,但是我不确定此特定组件是否需要此对象。