【发布时间】:2023-03-11 02:24:02
【问题描述】:
我已尽我所能阅读文档,但无法解决。
我有一个从 Bootstrap DateTime Picker 获取的日期/时间,它是一个 ISO 8601 字符串,如下所示:
2016-04-01T22:00:00+01:00
该字符串是在日期/时间选择器中选择 4 月 1 日晚上 10 点的结果。
我想将其转换为 unix 时间戳以存储在数据库中
当我使用时:
moment(date).format('X')
我得到以下 unix 时间戳:1459544400
这与2016-04-01T21:00:00+00:00 相关,比我选择的时间晚了 1 小时。无论我做什么,我似乎都无法获得 unix 时间戳来考虑偏移量。谁能帮助我并告诉我我在这里缺少什么?
非常感谢!
【问题讨论】:
-
时刻正在做正确的事情。你期待什么结果?顺便说一句,这两个时间戳发生在同一时刻。一个比另一个晚一个小时。
-
问题是,我正在使用这个时间戳来设置通知提醒。我得到的时间戳总是比用户使用日期/时间选择器输入的时间晚 1 小时——所以我的通知总是晚 1 小时。这是由 DST 引起的。我该如何解决?
-
嗯,那个场景并不是你所说的问题的一部分,所以我建议你单独研究一下(关于这个主题已经有很多问题了)。如果您找不到所需的内容,请针对该特定问题提出一个新问题,并附上支持性细节。虽然没有看到任何细节,但我建议您考虑一下 unix 时间戳可能不一定是序列化和持久化这些数据的最合适的形式。 ISO8601 字符串可能会更好。如果不了解您的完整设置,很难说。
-
如果您的方案主要是关于调度,请参阅this answer。
标签: momentjs unix-timestamp iso8601