这段对时程序有问题吗?

我原来一个DOS的程序通过一个GPS分脉冲对时,程序如下:
struct tm*local;
//struct date d;
time_t this_t;
this_t=time(NULL);
local=localtime(&this_t);
struct dostime_t reset;
reset.hour=local->tm_hour;
if (local->tm_sec>30)
{
reset.minute=local->tm_min+1;
if (reset.minute>59)
{
reset.minute=59;
reset.second = 59;
}
else
reset.second = 0;
}
else
{
reset.minute=local->tm_min;
reset.second = 0;
}
reset.hsecond = 0;
_dos_settime(&reset);

就是到整分时接收到一个GPS分脉冲,然后通过settime()函数对时,现场运行了一个月也没有问题,可是又过去2个月时钟差了20多天,这段逻辑有问题吗?

BC难道有BUG,我发现以上代码在2009年4月5日2:00,返回的local->tm_hour为1,成了1:00,其他时间好像都可以,难道是BC的BUG

天啊!localtime()在2009年4月5日2:00,返回的小时竟然是1:00,哪位能解释一下?

貌似没有此问题。你是什么版本的QNX?

BC是什么 ?

4月5日这个日子有点意思。你肯定你的TZ设的对吗?早上2点跳1点,听上去像是TZ里有夏令时设定。