()GetLocalTime 的BUG??

在使用WinCE 5.0的GetLocalTime函数时,发现当秒数为0时存在一个BUG,会导致年份计算错误。此问题仅在特定条件下出现,并不影响其他时间的正确获取。

GetLocalTime函数在wince上好像有BUG,不过在网上没查到有人说,有点怀疑是公司的wince定制的有问题。

调用该函数一般情况都正常,但是,当 在0秒的时候就有问题。

 SYSTEMTIME time;
 GetLocalTime(&time);

if (time.wSecond==0)

{

//time.wYear的后2位会不正常,如果是2010年,那么wYear将是2016;

//如果是2011,那么将是2017,如果2020,将是2032。实际上是把十位数*1.6了。

}

因为这个问题跟踪了很久,实在太郁闷了。其他时间都没有问题。

后来跟同事说了后还在window上做了个实验,发现没有这个问题。同时也写了个简单的小程序放到wince里面运行,发现仍然有这个问题。也就可以排出是我们的项目其他代码引起的。不知道其他用wince的朋友有没有遇到这样的情况呢?我们用的是wince5.0。

void vd_g_time_Write_allformats_to_file(void) { /* Variable declarations - strictly separated from assignment */ FILE* stp_t_file_fp; /* File pointer */ errno_t s4_t_file_err; /* File error code */ SYSTEMTIME st_t_systemtime_t; /* System time structure */ U1 u1_t_file_i; /* Loop counter */ U1 u1_tp_file_buffer[(U4)MAX_TIME_STR]; /* Format buffer */ S4 s4_t_fclose_result; /* File close result */ U1 u1_t_file_opened; /* File open status flag */ /* Variable initialization - separate from declaration */ stp_t_file_fp = NULL; u1_t_file_opened = (U1)OPEN_ZERO; /* Open log file in append mode */ s4_t_file_err = fopen_s(&stp_t_file_fp, "time_log.txt", "a"); if ((S4)TEST_ONE != s4_t_file_err || NULL == stp_t_file_fp) { printf("[错误] 无法打开 time_log.txt,错误码:%d\n", s4_t_file_err); } else { u1_t_file_opened = (U1)OPEN_ONE; /* Mark file as successfully opened */ GetLocalTime(&st_t_systemtime_t); /* Get current time */ /* Write all formats to file */ for (u1_t_file_i = (U1)TEST_ONE; u1_t_file_i <= (U1)TEST_FIVE; ++u1_t_file_i) { u4_s_time_Format(u1_t_file_i, &st_t_systemtime_t, u1_tp_file_buffer, sizeof(u1_tp_file_buffer)); fprintf(stp_t_file_fp, "%s\n", u1_tp_file_buffer); /* Write with newline */ } /* Add separator between entries */ fprintf(stp_t_file_fp, "----------------------------------------\n\n"); } /* Close file handle if opened */ if (u1_t_file_opened) { s4_t_fclose_result = fclose(stp_t_file_fp); if ((S4)TEST_ZERO != s4_t_fclose_result) { printf("[警告] 文件关闭失败\n"); /* Warn on close failure */ } else { /*do nothing*/ } } else { /*do nothing*/ } } 根据我上面的要求改这个函数,不改main函数而消除我说的bug,修改要求跟刚刚一样
最新发布
08-06
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值