如何思考时间

这是一篇关于日期和时间的详细指南,涵盖了从基础概念到各种编程语言中的时间处理方式,主要内容如下:

  • 基础概念:时间被视为一条向两端延伸的直线,即时间线,线上的每个点是一个瞬间(instant),瞬间之间的差异是持续时间(duration),持续时间以秒为单位。时间分为物理时间和民用时间,物理时间只关注持续时间和瞬间,民用时间则包含更多人为概念如月份、时区等。
  • 日历系统:重点介绍了格里高利历(Gregorian calendar),其日期由年、月、日组成,时间由时、分、秒组成,datetime 是两者的组合。还有多种竞争的日历系统,但大多很复杂。
  • 时区:时区是在物理时间和民用时间之间转换的规则集合,有好的时区(如 IANA 时区数据库中的时区)和坏的时区(如“PST”等)。UTC 是特殊的时区,偏移为零,是物理时间和民用时间转换的参考点,但它不是真实的人类时区。
  • 时间处理相关:避免使用“zoned datetime”类型,因为它会导致歧义和存储问题;不同编程语言有各自推荐的时间处理库,如 C++的 Abseil Common Libraries、C#/.NET 的 Noda Time 等;还讨论了墙时间、经过时间、Unix 纪元、AM/PM、星期几、闰秒、午夜与日始、递归等相关话题,并强调了在通信中应遵循国际标准书写日期。
    总之,正确理解和处理日期和时间对于编程和日常生活都很重要,要避免常见的错误和陷阱。
阅读 7
0 条评论