gmtime()
和localtime()
之间有什么区别?
我的要求:
我需要按照我所在地的时区显示时间。
我在几秒钟内有POSIX(UTC)格式的时间。我有时区偏移(在UTC和我当前的地方之间),以秒为单位。
我要么添加要么减去时区偏移量。
在此之后我仍然有POSIX格式的时间。
为了将其转换为人工时间,我应该使用gmtime()
还是localtime()
。这是因为我也需要约会。
请澄清。
谢谢!
答案 0 :(得分:1)
您不应该自己提供时区偏移,而是通过环境提供实时区域规范。然后,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
。
答案 1 :(得分:0)
gmtime
是UTC协调的世界时。它始终是
同样,无处不在。 localtime
是对当地时间的解释,
由时区确定,夏令时是否生效或
不。时区将由环境变量TZ
确定,
用户应该设置为他当地的时区;如果这个变量
如果未设置,则使用实现定义的默认值:通常为
机器所在的时区。