日期操纵与时刻.js



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

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

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

dateOfAction: moment(dateOfLoss, 'YYYY-MM-DD HH:mm Z').tz(userTimzone).unix(),所以dateOfAction1542776400。也就是说:Wednesday, November 21, 2018 5:00:00 AM- 到目前为止一切顺利。这是 UTC 格式的日期操作,在右偏移量之后

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

我怎样才能做到这一点?

几件事:

  • 时刻不会将Z令牌映射到字符串"UTC"。 由于您是在本地模式下解析的,因此您实际上会根据本地计算机的时区而不是 UTC 获得一个时刻。 因此,将代码的第一部分更改为:

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

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

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

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

  • 反应日期时间的自述文件描述了您可以使用的所有选项。 您可以简单地将上面获得的 moment 对象传递给value道具。 如果要更改行为,可能需要使用utcdisplayTimeZone道具。 在传入 moment 对象之前,您可能还需要在 moment 对象上调用.local().tz(userTimezone),但我不确定这个特定组件是否需要这样做。

最新更新