Date 有没有其他选择;日期“;数据类型,该数据类型更;模棱两可;而不是UTC?
在大多数编程语言中,典型的Date 有没有其他选择;日期“;数据类型,该数据类型更;模棱两可;而不是UTC?,date,datetime,Date,Datetime,在大多数编程语言中,典型的Date数据类型是一个Unix时间戳,表示“精确的时间时刻” 但我想知道是否有一种更“模糊”的日期结构,它更能代表人类对日期的感知 例如,假设我想表示一个特定的年份(2000),或一个特定的月份(2000年1月),或一个特定的日子(2000年1月1日)? 我可以将其存储为Unix时间戳,即1/1/2000 GMT凌晨12:00 但是计算机根据其本地时区解释时间戳,因此我的计算机将显示12/31/1999 PDT下午5:00,并且每台计算机将对其进行不同的解释 由于Uni
Date
数据类型是一个Unix时间戳,表示“精确的时间时刻”
但我想知道是否有一种更“模糊”的日期结构,它更能代表人类对日期的感知
例如,假设我想表示一个特定的年份(2000
),或一个特定的月份(2000年1月
),或一个特定的日子(2000年1月1日
)?我可以将其存储为Unix时间戳,即
1/1/2000 GMT凌晨12:00
但是计算机根据其本地时区解释时间戳,因此我的计算机将显示
12/31/1999 PDT下午5:00
,并且每台计算机将对其进行不同的解释
由于Unix时间戳似乎是时间上精确时刻的标准,我想知道是否有时间上模糊时刻的标准。如果没有标准,我很乐意阅读处理这些场景的任何特定实现(任何语言的) 是的,在很多地方你都会遇到这种情况:
- 在标准中,作为YYYY-MM-DD格式的字符串。例如
是2014年10月8日“2014-10-08”
- 在.NET语言(如C#)中,类型是日期和时间,但不一定绑定到特定的时间点。这取决于名为
的内部属性,该属性可以是Kind
、Utc
,也可以是Local
。如果未指定,则它只是一个日期和时间,不涉及任何时区。但它仍然有一个时间成分Unspecified
- 在.NET库中,类型为纯日期,没有时间或时区。类似地,是没有时区的日期和时间类型
- 在Java库中,类型是没有时间或时区的纯日期。类似地,是没有时区的日期和时间类型。您还可以在新的中找到这些类型 在C或C++中,结构表示日历日期和时间,而不考虑时区。它在标准库中,以及具有您在问题中描述的行为的结构中
- 在Python中,对象表示没有时间或时区的日期。该对象表示日期和时间,带有可选时区。当不存在时区信息时,Python称之为naive,当提供时区时,Python称之为aware
- 在许多数据库中,有日期和时间的数据类型,或仅日期的数据类型,而不考虑时区。我不会列出所有的数据库,但是考虑微软SQL Server有单独的和类型的。
顺便说一下,这些类型(以及更多)都包含在Pluralsight课程中,我是该课程的作者。您可能希望查看它。惊人的答案。。。我真的为没有意识到有这么多选项而感到难过。我很好奇,这些日期类型通常是如何序列化它们的数据的?似乎ISO字符串是一个简单的选择,但我想知道是否还有更优雅的。(我正在集思广益寻找JavaScript解决方案)ISO8601始终是序列化的最佳选择。“优雅”是什么意思?我认为ISO8601字符串将使用10-20个字节,而Unix时间戳是4个字节。但我想这只是一个实现细节,ISO具有可读性的巨大优势。您也可以自己做一些事情,比如发送一个从一个时代开始的整数,但这同样会牺牲可读性。这可以用作仅日期对象的内部表示,但不一定用于序列化。