如何查找当前系统时区

时间:2013-08-19 10:37:08

标签: c++ c linux timezone

我正在使用Ubuntu 10.04并将系统时区设置为“Europe / London”。 我想以上述格式设置系统时区,而不是“IST,EST等”。无论如何,我可以得到我们设置的相同格式的时区字符串,如“Europe / London”。

如上所述链接是为了复制,但实际上并没有回答我的问题。在发布此问题之前,我已检查了上述链接。

请建议。

先谢谢。

2 个答案:

答案 0 :(得分:0)

time.h定义了一个函数来检索系统时区并将其保存在两个字符串变量中:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main() {
    char * TZ = getenv("TZ");
    if (TZ)
        printf("TZ: %s\n", TZ);
    tzset();
    printf("Timezone: %s/%s\n", tzname[0], tzname[1]);
    printf("GMT %s%ld\n", timezone >= 0 ? "+" : "", timezone);
    printf("DST %s\n", daylight ? "ON" : "OFF");
}

请注意,在某些系统(例如Linux)上,此函数会从TZ环境变量中检索它的信息。如果没有设置,那么将给出近似值或变量将保持未初始化。

在我的OS X上,这些信息似乎来自其他地方。

答案 1 :(得分:-1)

为什么不只是cat / etc / timezone?

amrith@amrith-vbox:~/so$ more /etc/timezone
America/New_York