将VB6 Dbl Date值转换为Java Long Value

时间:2015-08-11 15:46:08

标签: java date vb6 type-conversion

我有一个旧的遗留VB6应用程序,它通过CDbl(Now)类型语句向我发送日期值为double。在java端,当前代码将值读入new Date(Long.parse(value))

我无法修改java端,但可以更改VB6代码。我如何获得Long.parse的正确浮点值来解析正确的值与日期和时间。

我认为java日期从某个任意日期开始从0开始(我认为是1/1/1970),VB 6日期可能是同一类型的想法,但我发现它很难跟踪有关VB6数据类型的信息。据推测,如果我知道日期之间的区别是什么,并且测量单位是相同的,我可以只偏移我发送给java应用程序的值。

1 个答案:

答案 0 :(得分:2)

您可以尝试的一件事是在VB6端调用VariantTimeToSystemTime,并根据Java的日期/时间编码规则将生成的SYSTEMTIME结构打包到Double中。 (我不知道这些规则,所以我认为它们与OLE日期/时间编码规则不同。如果它们相同,你可以直接传递Double 。)

如果需要直接访问VB6中日期值的字节,可以调用VarPtr() - 这将为您提供变量的地址,您可以根据需要读取字节。它可能比调用CDbl()更安全。 (我目前没有安装VB6,但转换功能可能会对输入值执行有趣的操作。调用VariantTimeToSystemTime可以避免需要CDbl()。)