将日期编码为时间戳的标准是什么?

是否有用于将日期编码为时间戳的标准?我的想法:

  1. 该时间应该是当地时间的UTC时间(例如UTC时间12:00),例如T-3上午9:00,因此任何使用时间戳的人,无论其-12 / + 12偏移时间如何,都会识别相同的日期,而不管它们是否在UTC时区进行解析

  2. 可能在世界标准时间 12:00 pm

  3. 可能是世界标准时间一天的开始(上午12:00)

  4. 可能是当地时间的一天的开始(世界标准时间上午12:00),例如T-3的晚上9:00


是否有要遵守的官方规范或标准?

很容易指向此文档并说“这是标准”,而不是不知道并不得不改变我们的逻辑。

monkey1210 回答:将日期编码为时间戳的标准是什么?

对此没有标准,因为从逻辑上讲日期和时间戳是两个截然不同的概念。

  • 日期涵盖了当天的整个时间范围,而不是特定的时间点。
  • 在任何给定时间点,另一个时区的人的日期可能不同,但是日期自己与时区没有任何关联。将日期可视化为日历上的正方形,而不是时间轴上的点。
  • 将仅日期值分配给日期+时间值时,许多API将使用午夜(00:00)作为默认时间。然而:
    • 是基于UTC还是基于本地时间都非常依赖于该特定API。没有标准,一个答案也不一定比另一个更好。
    • 指定当地时间午夜 对于在午夜附近有过渡的时区可能会出现问题。例如,in Santiago,Chile on 2019-09-08,由于夏令时开始,日期从01:00开始。那天没有00:00

此外,您还用momentjs标记了问题。由于Moment对象基本上是时间戳(而不是日期),因此,如果提供了仅日期的值,则Moment.js通常将指定一天的开始时间。所涉及的时区是确定实际时刻的关键,这说明了我先前的观点。

例如:

// Parsing as UTC
moment.utc('2019-09-08').format() //=> "2019-09-08T00:00:00Z"

// Parsing as Local Time (my local time zone is US Pacific Time)
moment('2019-09-08').format() //=> "2019-09-08T00:00:00-07:00"

// Parsing in a specific time zone (on a day without midnight)
moment.tz('2019-09-08','America/Santiago').format() //=> "2019-09-08T01:00:00-03:00"

还请记住,有时API可能会被错误命名。 JavaScript Date对象不是仅用于日期的值,而是实际上是时间戳,就像片刻一样。

,

我只想发布我们的答案是:

  1. 编码UTC开始时间
moment.utc(moment(date).format('YYYY-MM-DD')).toISOString();
  1. 在UTC时区进行解码(这样,使用该应用的任何人都会看到相同的日期)
moment.utc(timestamp)

如果我们的API返回的字段中带有单词“ date”(例如endDate),我们将在UTC进行解析,否则我们将解析为实际的(本地)时间戳,例如{{1} }

本文链接:https://www.f2er.com/3141695.html

大家都在问