1. 程式人生 > >C++ double型別的數轉換成具體的日期和時間

C++ double型別的數轉換成具體的日期和時間

通過OLE獲取到的時間是一個double型別的資料:
比如43058.3876851852,整數部分代表的是:從1899年12月30日午夜起計算“日”數。而小數部分代表的是不足一天。

具體的計算過程結果可以通過,Excel表格格式轉換來檢視

1.在Excel表格中輸入具體的浮點數
這裡寫圖片描述

2.右鍵設定單元格格式
這裡寫圖片描述

3.把單元格格式改為日期格式
這裡寫圖片描述

4.雙擊單元格就可以看到轉換之後的結果了
這裡寫圖片描述

具體的C語言實現方式:

string oleTime2Str(double time) {
    //2209190400 :指的是199011日-197011日的時間秒數
    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); }