时间基于C ++中的时区

时间:2011-11-25 09:06:45

标签: c++ c time

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

2 个答案:

答案 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确定, 用户应该设置为他当地的时区;如果这个变量 如果未设置,则使用实现定义的默认值:通常为 机器所在的时区。