c++ - 如何查找当前系统时区

标签 c++ c linux timezone

我使用的是 Ubuntu 10.04 并将系统时区设置为“欧洲/伦敦”。 我只想以上述格式设置系统时区,而不是“IST、EST 等”。无论如何,我是否可以获取与我们设置的格式相同的时区字符串,例如“欧洲/伦敦”。

如上所述,给出了重复的链接,但实际上它并没有回答我的问题。在发布这个问题之前,我已经检查了上面的链接。

请提出建议。

提前致谢。

最佳答案

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 上,此信息似乎来自其他地方。

关于c++ - 如何查找当前系统时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311749/

相关文章:

mysql - 如何使用 MySQL 与 C 中的 2 个数据库进行交互?

c - 如何使用 printf() 打印函数的返回值?

char * 到字符串文字?

Java + PDFBox 无法在 Linux 服务器上运行

php - 使用 PDO 对象运行多个 PHP 进程的最佳实践?

c++ - 获取 std::function 的名称

c++ - C++ 中的静态变量-vs- Objective-C

c++ - 一种保持元素有序的数据结构,支持快速插入和计算连续元素之间的最大差值

linux - 为什么 "/usr/bin/env bash -x"只能在命令行中工作?

c++ - 为什么 "pointer=pointer+i"得到了一种随机值