yyyymmdd.hhmmss 日期时间格式有名称吗?

Does the yyyymmdd.hhmmss date time-format have a name?

讨论数据时间格式时,有人向我提到他如何使用浮点数存储日期时间(以人类可读的格式)作为 yyyymmdd.hhmmss,因此 2019-09-18, 11:29:30am 将变为 20190918.112930

我想知道这个人是否发明了他自己的格式,或者它是否也在其他地方使用(和描述)- 如果是,它是怎么称呼的...?

根据维基百科,这类似于 ISO 8601,它允许以下所有日期和时间组合:

  • 2019-09-18T09:18:26+00:00
  • 2019-09-18T09:18:26Z
  • 20190918T091826Z

只是将时间和日期分开的 T 替换为 . 并且删除了时区信息。

该特定格式在 yyyymmdd.HHMMSS or the C's strftime()-compatible %Y%m%d.%H%M%S 形式中的受欢迎程度有限。


编辑

至于按照您建议的方式使用 float 作为日期和时间,这取决于精度和 machine representation。 如果系统遵循 IEEE 754 basic standard(这是大多数现代 C 编译器所坚持的),您至少需要 float64.

然而,这样做并不常见。 这可能部分是因为可能很难正确预测时间信息的准确性,而且它不如 Unix time 那样有效。 鉴于它具有的唯一积极特征是它可以依赖标准 %f 来自 sprintf(), I would only see it advantageous when strftime() 不可用或性能瓶颈。

虽然他可能自己想出了它,但它也是 zipinfo 中的格式选项。

manual没有明确命名它,而是将其描述为可排序的十进制格式十进制格式

不确定我们是否在谈论 SQL 日期格式。如果是这样,则此日期格式存在于 SQL 语句中。 不确定名称,它有不同的称呼方式:非标准、ISO、其他格式等。 也出现在 PHP.

大概是土布吧

我见过很多日期和时间格式,我以前没见过这个。我的看法是他的人或他的组织自己发明了它。

编辑: 感谢您在评论中确认。由于 Stack Overflow 上的评论并不总是永久性的,我在这里引用,你说:

Finally got confirmation from the source: it's homespun indeed.

顺便说一句,我不喜欢它。一个float在内部是以二进制格式存储的,只有格式化成十进制后,它才变得人类可读。使用 float 作为“人类可读”的日期和时间并不是格式化浮点数的本意,这是一种 hack。

使用 ISO 8601

对于人类可读的格式,我推荐 ISO 8601。此处 2019-09-18, 11:29:30am 变为 2019-09-18T11:29:30。或者更好,并且仍然在 ISO 8601 内,转换为 UTC 并附加一个 Z 来表示 UTC。因此,如果您原来的时间在 Europe/Berlin 时区,它将变为 2019-09-18T09:29:30Z。如您所见,ISO 8601 比您朋友的格式更易于阅读,并且可以按字符串排序(只要年份不超过 9999)。