gpt4 book ai didi

c lang时间问题时区不是当前的?如何更改 MacBook MacOS 硬件时区设置?

转载 作者:行者123 更新时间:2023-11-30 14:45:52 26 4
gpt4 key购买 nike

我正在写一个关于时间的小程序,但似乎MacBook时区设置有一些问题,我在系统偏好设置中当前的时区现在是JST(UTC+9)。

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

int main (int argc, char *argv[]) {

time_t time_in_second;
struct tm *time_today;

time (&time_in_second);

time_t today_in_second = time_in_second - (time_in_second % 86400);
time_today = gmtime(&today_in_second); // will out put 00:00
time_today = localtime(&today_in_second); // will output 09:00

printf ("year: %d\nmonth: %d\nday: %d\nhour: %d\nminuts: %d\nsecond: %d\n", \
1900+time_today->tm_year, 1+time_today->tm_mon,\
time_today->tm_mday, time_today->tm_hour, time_today->tm_min, time_today->tm_sec);

return 0;
}

localtime 不应该输出 00:00 而不是 gmtime 吗?

或者我只是误解了这一点?

我该如何解决这个问题?我做了一些搜索,但我只找到了更改操作系统时区设置的方法。

我可以将硬件时区更改为 UTC 以避免此问题吗?

最佳答案

这种行为是正确的。 time_t 相对于 UTC;对 time_t 值执行数学运算(例如将其向下舍入到最近的一天)将给出相对于 GMT 的结果。如果您想根据本地时区执行这些操作,则需要进行更正。

“硬件时区”与此行为无关,更改它不会产生任何影响,即使有可能。 (macOS 不支持将系统时钟存储为本地时间;这只是某些较旧的 Windows 系统上的标准做法。)

关于c lang时间问题时区不是当前的?如何更改 MacBook MacOS 硬件时区设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52705812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com