将OADate转换为struct



Excel日期以double形式存储,似乎被称为OADate,是否有内置函数将OADate转换为struct tm

例如,在Excel中,9/May/201441768。我需要在c++中找到一种方法来转换41768struct tm初始化为正确的日期。

是否有内置函数来做到这一点?我可以使用VariantTimeToSystemTime(),但它将其转换为LPSYSTEMTIME,然后需要转换为struct tm。我在寻找一种能同时做到这两点的东西。这不是很难做到,但我宁愿使用内置函数,而不是自己编写。

如果有人需要这样做,这足以使它工作:

    double oaDate = 41678.;
    char buffer[256];
    struct tm timeinfo;
    _SYSTEMTIME lpSystemTime;
    VariantTimeToSystemTime(oaDate, &lpSystemTime);
    timeinfo.tm_mday = lpSystemTime.wDay;
    timeinfo.tm_mon = lpSystemTime.wMonth - 1;      // Be careful of different conventions
    timeinfo.tm_year = lpSystemTime.wYear - 1900;
    timeinfo.tm_hour = lpSystemTime.wHour;
    timeinfo.tm_min = lpSystemTime.wMinute;
    timeinfo.tm_sec = lpSystemTime.wSecond;
    timeinfo.tm_isdst = 0;
    mktime(&timeinfo);

相关内容

  • 没有找到相关文章

最新更新