通过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);
}