解码日期格式?
给定一些简短的整数和它们代表的日期,是否有任何系统的方法来确定如何以这种格式存储并解码其他日期?存储的数据来自另一个软件。解码日期格式?
我最初认为日期是由其中一个字节表示的,因为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具有相同的第二个字节为09年5月1日,反之在2010年这两个日期都在第二个字节不同的值。
编辑:由于答案和一些研究,我看到时代是1858年11月17日。这是一个标准格式称为修正的朱利安日。
看起来好像是从过去的某个时间点到1858年(我没有计算出所有的闰年魔法),但一年中的每一天只会在您现有的应用程序中显示> 2000年。您标记年份的字节是高位字节,而“日”字节是低位字节。
我没有足够的代表投票了,但谢谢!尽管文件中的其他数据使用相反的顺序,但我不觉得有点愚蠢。 – 2011-05-21 03:27:00
难道它不仅仅是一个16位天的时代价值? 2000年2月10日为51584. 2011年2月18日为55610.在 - (11 * 365)+ 3闰日+月份的8天差异之间有4026天。这个时代的开始似乎大概是1860年。或者,更可能的是,1950年1月1日的高阶1位开启。
不是一个真正的编程问题....? – 2011-05-21 02:07:00
我应该改变标签,还是你说它根本不属于这里?在试图想出想法时,我发现了类似的问题,像http://stackoverflow.com/questions/4261684/how-to-decode-some-number-into-timedate – 2011-05-21 02:11:11
你的例子保证是正确的,或者他们是只是猜测? – 2011-05-21 02:12:24