如何从其他语言的VB二进制文件中读取日期?

和我

我从VB应用程序中获取了一个二进制文件,该文件由大约1400条日期格式的时间戳记及其后的19个Long值组成。

我可以使用以下功能在VBA中读取数据:

Dim myDate As Date
Dim myLong As Long
iFileNum = FreeFile
Open "C:\test.bin" For Binary Access Read As #iFileNum
Do While Not EOF(iFileNum)
  Get iFileNum, , myDate
  MsgBox(myDate)
  For i = 1 To 19
    Get iFileNum, , myLong
  Next i
Loop    

现在,我想从java中的文件中读取Date-timestamps(我已经能够读取Long-values),但是我找不到任何有关如何解释Date-type的8个字节的信息。

例如,二进制形式的第一个时间戳是c5 b3 a2 11 80 7b e4 40VB的输出是2014-11-05 0:03:06 AM。

为了澄清,我不是在寻找Java实现,而是从VB寻找数据类型“ Date”的二进制表示形式的信息。(为此,除此http://msdn.microsoft.com/en-us/library/3eaydw6e.aspx之外我无法找到其他更多信息,这没有太大帮助)

汤普森(Gord Thompson)

正如@RBarryYoung在对问题的评论中提到的那样,VBA在内部将日期/时间值存储为浮点Double值。整数部分是自1899-12-30以来的天数,小数部分是时间(例如0.25 = 6 AM,0.5 =正午,0.75 = 6 PM)。

在您给出的示例中,日期/时间(双精度)值以字节形式存储为c5 b3 a2 11 80 7b e4 40Windows一直是小端环境,因此通过反转字节顺序,我们知道它对应于64位二进制值0x40e47b8011a2b3c5

这样的Binary-to-IEEE_Double转换器告诉我们十进制Double值为4.19480021527777789742685854435E4,如果我们问VBA对应的日期/时间值是多少,我们会得到

?CDate(41948.0021527777789742685854435)
2014-11-05 00:03:06

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章