SYSTEMTIME st;
::GetSystemTime(&st);
被这个大坑郁闷了一下午,事情是这样的,测试报过来一个bug,说该怎么怎么滴,结果没怎么怎么,严重滴不符合我们的逻辑,我立即表示马上着手解决该问题,料想某总Boss做release包的时候把模块版本搞错了,要不就是获取时间后的算法某个地方我手误写错了。
倒回去看了半天算法,改了一圈又改回原来的写法还是没找到错误。
单步跟踪。
偶然在Watch窗口里面发现两次GetSystemTime()取时间得到的结果有异样。
MSDN里写得清清楚楚,返回值是UTC。可是到我这儿就不好使了,第一次返回东八区时间,第二次返回的是UTC时间。
推测是测试环境有问题,修改hosts;
10.0.0.x time.windows.com
10.0.0.x time. nist.gov
将windows时间服务器屏蔽掉。
再测,结果依然返回值不一致,我意识到我被M$河蟹了……
无奈,换成GetLocalTime取本地时间,然后和COleDateTimeSpan(0,8,0,0)做减法取UTC搞定。
问题算是曲线救国的交差了,事后想来,代码调用的位置,唯一的不同是,一次是全局函数调用,一次是在类成员函数里调用,难道this指针会影响到GetSystemTime的结果?
望同被这个坑折磨过的老牛救命啊~


分享到做啥
分享到收客
