在下面的代码中,我试图显示epoch时间值“1411636989”的pdt和gmt格式,但它只更改时区而不更改日期,下面是示例输出。

int main()
{
    time_t my_time = 1411636989;

    if (putenv("TZ=PDT"))
        printf("Current time zone = %s###########\n", getenv("TZ"));
    else {
        printf("Time zone = %s###########\n", getenv("TZ"));
        printf("PDT 1411636989 = %s$$$$$$$$$$$$$$$$$$\n", asctime(localtime(&my_time)));
    }

    if (putenv("TZ=GMT"))
        printf("putenv failed errno = %d##########\n",errno);
    else {
        printf("New time zone = %s###########\n", getenv("TZ"));
        printf("GMT 1411636989 = %s$$$$$$$$$$$$$$$$$$\n", asctime(localtime(&my_time)));
    }

    return 0;
}

Sample O/P:
Time zone = PDT###########
PDT 1411636989 = Thu Sep 25 09:23:09 2014
$$$$$$$$$$$$$$$$$$
New time zone = GMT###########
GMT 1411636989 = Thu Sep 25 09:23:09 2014
$$$$$$$$$$$$$$$$$$

最佳答案

您必须使用与/usr/share/zoneinfo/目录下的文件名匹配的时区之一。PDT的TZ不会被识别。如果TZ变量无效,系统将返回GMT。
设置为“美国/太平洋”。

putenv("TZ=US/Pacific")

关于c - 更改时区而不更改时区的日期格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26085388/

10-15 01:13