gpt4 book ai didi

C++,将 OADate 转换为 struct tm

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:51 26 4
gpt4 key购买 nike

Excel 日期以 double 形式存储在似乎称为 OADate 的约定中,是否有内置函数将 OADate 转换为 struct TM.

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

是否有内置函数来执行此操作?我可以使用 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);

关于C++,将 OADate 转换为 struct tm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23563973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com