回复:求助! 合格证上传后 制造日期和生产日期 发生变化,差8个小时
此问题由日历时间结构time_t引起,系C语言经典问题。
使用gSoap生成的C++ SOAP代理使用日历时间time_t,日历时间表示“从一个标准时间点到此时的时间经过的秒数”。
标准时间点采用世界标准时间UTC (即格林威治标准时间GMT)表示。
机动车合格证数据中心数据库系统仅保存日历时间。
中国内地时间与UTC的时差为+8,因此使用C++编写程序时应注意此时差。
如上传时计算不正确,则服务器保存的“差值秒数”也将存在问题。此时即会出现形如相差8小时的情况。
解决方法为上传时生成正确的time_t结构。
以Visual C++为例,时间生成应编写如下代码:
//日期时间型字段使用示例
tm pt;
pt.tm_year=2009-1900;
pt.tm_mon=0;
pt.tm_mday=1;
pt.tm_hour=0;
pt.tm_min=0;
pt.tm_sec=0;
pt.tm_isdst=0;
time_t clzzrq=_mkgmtime(&pt);
certificateInfo->CLZZRQ=clzzrq;
C/C++涉及过多低层操作,建议开发应用类系统时慎重选用此类工具