簡體   English   中英

C ++,將OADa​​te轉換為struct tm

[英]C++, Convert OADate to struct tm

Excel日期按照似乎稱為OADate的約定以雙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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM