c - 如何知道系统正在使用哪个时区

标签 c linux timezone

我正在编写一些代码,我需要知道系统中哪个时区处于事件状态(我在 Linux SO 上工作):

  • 我的第一个方法是检查 TZ 环境变量,它是空的,除非我设置它(例如调用 tzset)

  • 之后,我尝试使用 extern long timezone (time.h),但此变量始终为 0。

  • 最后我计算了我的时区和 UTC+0 的时差,但我没有得到我的真实时区,因为我不知道是否适用夏令时

我很确定有一种简单(且最一致)的方法可以实现这一点。我正在寻找类似“Europe/Paris”或“UTC+2”之类的东西

任何帮助将不胜感激!

最佳答案

作为起点,我建议这样做:

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

int main(void)
{
  char str[64];
  time_t timer;
  struct tm * ptm;
  timer = time(NULL);
  ptm = localtime(&timer); 
  strftime(str, sizeof(str), "%Z", ptm);
  printf("TZ: %s\n", str);
  return(0);
}

关于c - 如何知道系统正在使用哪个时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526927/

相关文章:

c - 使用分配在堆栈上的数组从不兼容的指针类型警告中初始化

c - K&R C 书中的基本 getchar() 相关函数不起作用?

linux - ping 响应显示它来自不同的 mac 地址

c - Linux:如何确定文件是否已被另一个进程更新?

Java:将 "Europe/London"转换为 3 位时区

java - 从没有时区的字符串到欧洲/柏林的时间

java - 尴尬的 Java 日期创建行为

c++ - 如何在c中查找同一字符串中该字符的第一次重复出现

c - 使用 C 与 Shell 交互

c - 如何通过api获取扩展的locale信息