2011-11-25 72 views
2

gmtime()localtime()有什么区别? 我的需求: 我需要根据我所在的时区显示时间。 我有一段时间在POSIX(UTC)格式在几秒钟内。我有时区偏移(在UTC和我目前的地方之间)以秒为单位。 我要么加或减时区偏移量。 之后,我仍然有POSIX格式的时间。 为了将其转换为人类时间,我应该使用gmtime()还是localtime()。这是因为我也需要日期。 请说明。 谢谢!基于C++时区的时间

回答

0

gmtime是UTC —协调世界时。它始终是 相同,无处不在。 localtime是当地时间的解释, 由时区确定,以及夏令时是否生效或者是否为 。时区将由环境变量TZ, 确定,用户应该将其设置为当地时区;如果未设置此变量 ,则会使用已定义的实施默认值:通常是机器所在的时区 。

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