C++ double型別的數轉換成具體的日期和時間
阿新 • • 發佈:2019-02-03
通過OLE獲取到的時間是一個double型別的資料:
比如43058.3876851852,整數部分代表的是:從1899年12月30日午夜起計算“日”數。而小數部分代表的是不足一天。
具體的計算過程結果可以通過,Excel表格格式轉換來檢視
1.在Excel表格中輸入具體的浮點數
2.右鍵設定單元格格式
3.把單元格格式改為日期格式
4.雙擊單元格就可以看到轉換之後的結果了
具體的C語言實現方式:
string oleTime2Str(double time) {
//2209190400 :指的是1990年1月1日-1970年1月1日的時間秒數
time_t t = time * 24 * 3600 - 2209190400;
struct tm tm1;
localtime_s(&tm1, &t);
char sz[64];
memset(sz, 0, 64);
sprintf_s(sz, "%04d-%02d-%02d %02d:%02d:%02d"
, tm1.tm_year + 1900,
tm1.tm_mon + 1,
tm1.tm_mday,
tm1.tm_hour,
tm1.tm_min,
tm1.tm_sec);
return string(sz);
}