【发布时间】:2013-11-28 12:42:55
【问题描述】:
如果localtime 在不同平台上的时区设置相同,我想知道两者的工作方式是否不同。如果是的话,除了时区之外的依赖参数是什么?
我在 2 个平台上运行它:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main()
{
time_t t,t1;//,result;
double d1;
struct tm *tm;
t1 = 1384496356;
tm = localtime(&t1);
printf("tm->tm_hour %d tm->tm_min %d\n",tm->tm_hour,tm->tm_min);
return 0;
}
输出
tm->tm_mday 15 tm->tm_hour 11 tm->tm_min 33
和
tm->tm_mday 15 tm->tm_hour 6 tm->tm_min 3
【问题讨论】:
-
依赖硬件时钟?
-
当我运行
hwclock --debug它输出hwclock from util-linux-ng 2.16.1 hwclock: Open of /dev/rtc failed, errno=2: No such file or directory. No usable clock interface found. Cannot access the Hardware Clock via any known method. -
相差5小时30分钟,这是IST(印度标准时间)与UTC的偏移量。两个系统上设置的 TZ 值是多少?通常有一个系统范围的设置,有时在
/etc/timezone中,它提供了时区的默认设置。我还注意到您显示的代码不会给出您显示的输出。问题中的这种差异会引起警告;你还有什么不告诉我们的? -
@JonathanLeffler :当我执行
date +%Z时,它会给出UTC。当我执行env时,它不会显示TZ。它在哪里?在哪里找到它的价值? -
@Arya 然后,您的一台机器上的时间似乎配置错误 - 也许有人在一台机器上将其设置为 UTC,而在另一台机器上设置为当地时间。你在运行 ntp 吗?
标签: c linux time timezone embedded-linux