我从一个 API 得到这个 - 这个日期与 1983 年 6 月 30 日有关:
[DateOfBirth] => /Date(425775600000+0100)/
那么这是什么数据类型呢?API 文档说它是 DateTime 但我以前没有遇到过这样的情况。我需要能够解码并重新编码成这种格式。
谢谢。
我从一个 API 得到这个 - 这个日期与 1983 年 6 月 30 日有关:
[DateOfBirth] => /Date(425775600000+0100)/
那么这是什么数据类型呢?API 文档说它是 DateTime 但我以前没有遇到过这样的情况。我需要能够解码并重新编码成这种格式。
谢谢。
正如Havenard所指出的,核心格式是“自 Unix 纪元以来的毫秒数”,时区偏移为一小时。
$ timestamp -u 425775600
425775600 = Wed Jun 29 23:00:00 1983
$
这是一个非标准程序,但它提供了信息;意思是-u
“使用gmtime()
”,并且它是 1983 年 6 月 30 日午夜前一小时的事实是由于一小时的时区偏移。
(Unix 纪元是 1970-01-01 00:00:00 +00:00 — UTC 时间 1970 年 1 月 1 日午夜。)
那是以毫秒为单位的 unix 时间。
自 1970 年 1 月 1 日以来,Unix 时间以秒为单位给出,所以
425775600
映射到
30.06.1983 01:00:00
(由于时区而有偏移)。
使用这样的工具来验证:
该格式是 Microsoft 在其JavaScriptSerializer
用于 ASP.Net 的课程中开发的专有格式。你可以在这里和这里阅读。
然后你可以阅读一些由此引起的噩梦。
这种格式虽然仍受支持,但不再推荐。微软已经远离JavaScriptSerializer
了令人敬畏的JsonContractDataSerializer
类,现在正在使用Json.Net库。
最初,该库使用 Microsoft 格式作为其默认格式。但这在 4.5 中有所改变。它现在使用 ISO8601 格式的日期。 在这里阅读。
事实是 - JSON 没有为日期或时间指定任何特定格式。早期人们有不同的意见,但现在这些意见都围绕着对 ISO8601 的一致支持而得到巩固。具体来说,RFC3339中描述的配置文件是应该使用的标准,例如:
2013-05-14T10:30:00-07:00