在JSON中存储日期/时间的最佳方法是什么?

What is the best way to store a date/time in JSON?

我不熟悉JSON,在查看JSON规范时,我注意到没有日期和时间的数据类型。我做了一些研究并提出了一些建议,其中一个建议是使用unix时间戳。这是最简单的方法吗?我会遇到任何问题吗?


我建议使用ISO 8601日期。尤其是这种格式

1
2014-03-12T13:37:27+00:00

可在多种编程语言中移植。

编辑:

JSON只知道这些类型:

1
2
3
4
5
6
7
string
number
object
array
true
false
null

日期和日期时间最好以广泛使用的格式存储为字符串。


当然,您应该将字符串保存在JSON中。但是假设你想过滤日期。您仍然可以将"数字"存储为类似"125"(二进制编码的十进制)的字符串,当您将其转换回125时,它将非常有用。也就是说,如果要自定义日期编号以进行筛选,例如:使用long类型并对其执行位操作。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

  • 在4096-1年之前,为YYYY保留12位。
  • 为mm保留4位,因为(0-11)足够。
  • 为dd保留5位,因为月份的日期是(1-31)。

您可以继续保留位数小时,分钟,直到64位。在这种情况下,dd/mm/yyyy是21位。通过使用这一程序,您同意@clay ferguson,并且您能够以"<"和">"的方式在地图中按年、月、日过滤一个键集,这非常容易,而且可能非常快。


如果您更关心内存(和磁盘空间)的效率,而不是原始JSON的可读性,那么最好将其存储为整数(即日期的毫秒值)。另外,如果您真的想优化节省的空间,您可以将该整数编码为base64,然后让JSON将base64字符串保存为JSON字符串。我甚至没有提到十六进制,因为如果您正在编码非十进制的东西,您也可以转到base64。换句话说,在base64上十六进制编码没有好处,所以只需使用base64。