2

给定一些短整数和它们代表的日期,是否有任何系统的方法来确定它们如何以这种格式存储并解码其他日期?存储的数据来自另一个软件。

我最初认为这些天由一个字节表示,因为 5 月 1 日的第一个字节减去 2 月 11 日的第一个字节确实等于正确的天数(2011 年为 79)。但不可能这么简单,不仅因为8位只能存储256天,还因为2000年之前的日期只存储年份,两个字节。

这是我正在使用的内容,但请对列标题持保留态度。

DDDDDDDD YYYYYYYY DD-MM-YY
01011010 10001010 1955
10110010 10010001 1960
11000000 10010001 1961
11100011 11000011 1996
01010001 11000110 1997
00001101 11001000 1999
10000000 11001001 10-02-00
11010101 11001010 16-01-01
10101010 11001101 11-01-03
00000101 11010000 05-09-04
10011101 11010101 07-08-08
11010000 11010101 27-09-08
00010000 11010110 30-11-08
00110100 11010110 05-01-09
11111110 11010110 26-07-09
10011101 11010111 01-01-10
10110111 11011000 10-10-10
00110011 11011001 11-02-11
00111010 11011001 18-02-11
10000010 11011001 01-05-11
10000101 11011001 04-05-11
01101100 11100110 19-05-20

我还看到 30-11-08 与 05-01-09 具有相同的第二个字节,相反,2010 年的两个日期在第二个字节中具有不同的值。

编辑:感谢答案和一些研究,我看到时代是 1858 年 11 月 17 日。这是一种称为修改儒略日的标准格式。

4

2 回答 2

3

从过去的某个时间 ~1858 年(我还没有计算出所有闰年的魔法),看起来好像是几天了,但是一年中的这一天仅在您现有的应用程序中显示多年 >= 2000。您标记年份的字节是高位字节,而“天”字节是低位字节。

于 2011-05-21T02:55:20.063 回答
2

它不只是一个 16 位的天数自纪元值吗?2000 年 2 月 10 日是 51584。2011 年 2 月 18 日是 55610。之间有 4026 天 -- (11 * 365) + 3 个闰日 + 8 天的差异。纪元的开始似乎大约是 1860 年。或者,更有可能的是,高位 1 位在 1950 年 1 月 1 日开启。

于 2011-05-21T03:05:31.307 回答