【问题标题】:OADate separated from timeOADate 与时间分离
【发布时间】:2017-12-04 19:42:50
【问题描述】:

一个旧的 C++ 应用程序将日期和时间分开。该应用程序将记录显示为具有如下日期/时间:

10/21/2015       15:17:22

但是数据是这样存储的:

13078(+29220)    3857

我知道我们的 OADate 的偏移量为 29220。所以13078 + 29220 = 42298,它是10/21/2015 的OADate。但我不知道 3857 应该如何等于 15:17:22

实际的字段是:

int _dateValue;
struct time _timeValue;

另一个例子:

10/02/2015       08:40:50
13059 (+29220)   2088

我相信时间最初取自 c struct time 函数 gettime 该结构具有提取小时、分钟和秒的功能。但我只有基值,我正在使用 C# 和 SQL 将该基值转换为时间。

【问题讨论】:

    标签: c++ datetime data-conversion


    【解决方案1】:

    3857 是 0xF11。巧合的是 0xF == 15 和 0x11 == 17。

    2088 是 0x828。巧合的是 0x8 == 8 和 0x28 == 40。

    看起来时间的高字节代表小时,低字节代表分钟,秒被扔到比特桶中。

    【讨论】:

    • 霍华德,这个问题可能是个谜,你会得到奖励。结果发现,一个中间层应用程序正在将原始字节转换为数字,从而掩盖了您发现的答案,尽管有这种复杂性。 dos.hstruct time 确实存储了这四个字节,但是这些信息是混乱的:分钟、小时、百分之一和秒。
    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多