我正在尝试使用 C'localtime()
函数打印计算机上的本地时间;
我的区域设置的默认格式是mm/dd/yyyy,所以 预期输出为:03/04/2023 12:51:43 但我得到:04/02/2023 12:51:43 我在想,也许本地时间函数不遵循 mm/dd/yyyy,除了月份(后面加 1)之外,一切都会正确?这真的让我很困惑。 这是我的代码:
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t rawtime = time(NULL);
struct tm *ptime = localtime(&rawtime);
printf("The time is: %02d/%02d/%04d %02d:%02d:%02d\n",
ptime->tm_mday, ptime->tm_mon, ptime->tm_year + 1900,
ptime->tm_hour, ptime->tm_min, ptime->tm_sec);
return 0;
}
我见过很多关于 localtime() 给出错误时间的问题,这是由于时区造成的,但我不知道这个问题是什么原因造成的; 谁能帮助发现我做错了什么? 谢谢!
最佳答案
tm_mon
字段指定自 1 月以来的月数,因此对于 3 月份,该字段的值为 2。
此外,您的输出会先显示日期,后跟月份,因为这是您打印它们的顺序。
要正确打印月份,并首先打印月份,您需要:
printf("The time is: %02d/%02d/%04d %02d:%02d:%02d\n",
ptime->tm_mon + 1, ptime->tm_mday, ptime->tm_year + 1900,
ptime->tm_hour, ptime->tm_min, ptime->tm_sec);
关于c - localtime() 在 C 中给出了错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75637704/