【问题标题】:Time based on time zone in C++基于 C++ 中时区的时间
【发布时间】:2011-11-25 09:06:44
【问题描述】:

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

【问题讨论】:

    标签: c++ c time


    【解决方案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

    【讨论】:

      【解决方案2】:

      gmtime 是 UTC——协调世界时。它总是 一样的,到处都是。 localtime是当地时间的解释, 由时区和夏令时是否生效或 不是。时区将由环境变量TZ决定, 用户应该设置为他的本地时区;如果这个变量 未设置,使用实现定义的默认值:通常 机器所在的时区。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-09
        • 1970-01-01
        • 2021-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多