我正在尝试使用 C 获取当前时间time_t current_time = time(NULL)
。据我了解,它将返回系统的当前时间。我稍后尝试使用 struct 将其转换为 GMT 时间tm* gmt = gmtime(¤t_time)
。
ctime()
我使用和asctime()
功能打印两次。
我系统上的当前时间是 GMT + 1。但gmtime()
返回的时间与原样相同current_time
。我不明白为什么要gmtime()
同时返回我。任何帮助将不胜感激。
好的,这里是代码和输出:windows 显示的当前时间是 17:54(斯德哥尔摩区;GMT+1)。我想在 15 点 54 分给我一些东西。或者也许我的理解是错误的......
time_t current_time = time(NULL);
struct tm* gmt = gmtime(¤t_time);
struct tm* loc = localtime(¤t_time);
printf("current time: %s\n", ctime(¤t_time));
printf("gmt time %s\n", asctime(gmt));
printf("local time %s\n", asctime(loc));
输出:
current time: Mon Oct 8 17:54:06 2012
gmt time Mon Oct 8 17:54:06 2012
local time Mon Oct 8 17:54:06 2012
接受的解决方案: 来自 Simes
那可能是你的问题。检查 TZ 环境变量的值;如果不存在,它将默认为 GMT。Cygwin 不会自动从 Windows 获取时区设置。另请参阅本地时间返回 GMT 以了解在 cygwin shell 上运行的 Windows 程序