首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日期编码为时间戳的标准是什么?

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

Stack Overflow用户
提问于 2019-11-07 20:52:57
回答 1查看 482关注 0票数 1

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

  1. 这应该是当地时间的12:00 12,如早上9:00在T-3,因此,任何使用时间戳的人,无论其-12/+12偏移量如何,都将识别相同的日期,无论它们是否在UTC时区解析。
  2. 可能是12:00下午12:00在UTC
  3. 这可能是一天的开始,(凌晨12:00)在UTC
  4. 这可能是当地时间 of (12:00 UTC),例如晚上9:00在T-3点。

是否有正式的规格或标准可供遵守?

可以很容易地指向这个文档,说‘这是标准’,而不是不知道和不得不改变我们的逻辑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-08 00:29:35

这方面没有标准,因为日期和时间戳在逻辑上是两个非常不同的概念。

  • 日期涵盖了当天的整个时间范围,而不是具体的时间点。
  • 对于处于另一个时区的人来说,在任何给定的时间点,它可能是一个不同的日期,但日期本身与时区没有任何关联。将日期想象为日历上的一个正方形,而不是时间轴上的一个点。
  • 许多API将使用午夜(00:00)作为向date+time值分配仅日期值的默认时间。然而:
    • 无论是基于UTC还是基于本地时间,都非常依赖于特定的API。这是没有标准的,一个答案也未必比另一个更好。
    • 对于午夜附近有过渡的时区,分配本地时间午夜可能会有问题。例如,209-09-08年在智利圣地亚哥,由于DST的开始,这一天开始于01:00。那天没有00:00

同时,你用momentjs标记了你的问题。因为Moment对象基本上是一个时间戳(而不是日期),所以如果提供了一个仅日期的值,Moment.js通常会分配一天的开始。所涉及的时区是决定实际是哪个时刻的关键,这说明了我以前的观点。

例如:

代码语言:javascript
复制
// 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对象不是一个仅限日期的值,实际上是一个时间戳,就像一瞬间一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58756741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档