gmtime()localtime()有什么区别?
我的要求:
我需要按照我所在的时区显示时间。
我有一个时间以POSIX(UTC)格式(以秒为单位)。我有以秒为单位的时区偏移量(在UTC和我当前的位置之间)。
我添加或减去时区偏移量。
在此之后,我仍然有时间以POSIX格式。
为了将其转换为人类时间,我应该使用gmtime()localtime()。这是因为我也需要日期。
请澄清。
谢谢!

最佳答案

您不应自己提供时区偏移,而应通过环境提供实时时区规范。然后,localtime将为您提供本地化时间。 (gmtime始终为您提供UTC。)假设您的代码看起来像

struct tm time_buffer, *localtime;
localtime = localtime_r(timep, &time_buffer);
printf("The hour is %i\n", localtime->tm_hour);

,然后您通过以下方式调用程序:
$ TZ=Europe/Berlin my-program

并获取柏林的当地时间,并根据夏令时进行正确调整。

如果您绝对需要自己提供时区,请阅读man tzset

07-25 22:50
查看更多