我无法从Linux上运行的应用程序获得正确的时间

问题描述

我使用/etc/timezone包含Etc/GMT的Linux嵌入式系统。

如果我用hwclock -r读取了硬件时钟,我会说13:00。 如果用date读取系统日期,我也会得到13:00

现在,如果我使用以下代码从C应用程序中读取日期:

time_t tv;
time(&tv);
localtime_r(&tv,&time_utc);
printf("%s\n",ctime(&tv));
printf("%d:%d\n",time_utc.tm_hour,time_utc.tm_min);

我得到了(不在乎日期):

... 15:00 ...
15:00

为什么?

现在,如果在应用程序内部,则使用以下代码将日期设置为13:00

const struct timeval tv = {mktime(&time_utc),0};
settimeofday(&tv,NULL);

然后我将使用前面提到的代码正确读取时间。

那么为什么初次阅读似乎只关心一些daylight saving time而不是打电话给settimeofday(&tv,NULL)之后呢?

我的配置中缺少什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)