讨论数据时间格式时,有人向我提到他如何使用浮点数作为yyyymmdd.hhmmss
存储日期时间(以人类可读的格式),因此2019-09-18, 11:29:30am
会变成20190918.112930
我正试图找出这个人是否发明了自己的格式,或者是否也在其他地方使用(并描述了它)-如果是这样,它怎么被称为...?
答案 0 :(得分:1)
根据Wikipedia,这类似于ISO 8601,它允许以下所有日期和时间的总和:
除了用T
代替将日期与日期分开的.
并删除时区信息。
该特定格式在yyyymmdd.HHMMSS
或与C兼容的strftime()
兼容%Y%m%d.%H%M%S
格式中的普及程度均受到限制。
就按照您建议的方式使用float
作为日期和时间,取决于精度和machine representation。
如果系统遵循IEEE 754 basic standard(这是大多数现代C编译器所坚持的目标),则至少需要float64
。
但是,这样做并不普遍。
这可能部分是因为可能难以正确预测时间信息的准确性,并且其比特效率不如Unix time。
鉴于它唯一的优点是可以依靠sprintf()
中的标准%f
,所以只有在strftime()
不可用或性能瓶颈的情况下,我才会看到它的优势。
答案 1 :(得分:1)
答案 2 :(得分:1)
不确定我们是否在谈论SQL日期格式。如果是这样,则此日期格式将出现在SQL语句中。 不确定名称,它以不同的方式调用:非标准,ISO,其他格式等。 在PHP中也存在。
答案 3 :(得分:1)
可能是土布
我见过很多日期和时间格式,而且我以前从未见过。我的想法是,他的家伙或他的组织是自己发明的。
编辑:感谢您在评论中进行确认。由于注释并不总是在Stack Overflow上永久存在,因此我在此引用您的意思:
最后得到消息来源的确认:这确实是土布。
顺便说一句,我不喜欢它。 float
在内部以二进制格式存储,只有将其格式化为十进制后,它才变得可读。使用float
作为“可读的”日期和时间并不是浮点数格式的目的,这是一个黑客。
使用ISO 8601
对于人类可读的格式,我建议使用ISO8601。这里2019-09-18, 11:29:30am
变为2019-09-18T11:29:30
。甚至更好并且仍在ISO 8601内,转换为UTC并附加一个Z
以表示UTC。因此,如果您原来的时间在欧洲/柏林时区,它将变为2019-09-18T09:29:30Z
。如您所见,ISO 8601比您朋友的格式更具可读性,并且可以按字符串排序(只要年份不超过9999)。