我有这段代码:
#include <stdio.h>
#include <time.h>
int main(void) {
time_t rawtime = time(NULL);
struct tm *ptm = localtime(&rawtime);
printf("The time is: %02d:%02d:%02d\n", ptm->tm_hour,
ptm->tm_min, ptm->tm_sec);
printf("The date is: %02d:%02d:%04d\n.", ptm->tm_mday, ptm->tm_mon, ptm->tm_year);
return 0;
}
当我运行它时,它会将tm_year
的值返回为116而不是2016.有人可以告诉我原因吗?
答案 0 :(得分:3)
tm_year
字段表示为自1900年以来的年份:https://linux.die.net/man/3/localtime
答案 1 :(得分:2)
由于tm_year
是自1900年以来的年数,因此您需要为此添加1900。
来源:http://pubs.opengroup.org/onlinepubs/7908799/xsh/time.h.html
所以你得到:
#include <stdio.h>
#include <time.h>
int main(void) {
time_t rawtime = time(NULL);
struct tm *ptm = localtime(&rawtime);
printf("The time is: %02d:%02d:%02d\n", ptm->tm_hour,
ptm->tm_min, ptm->tm_sec);
printf("The date is: %02d:%02d:%04d\n.", ptm->tm_mday, ptm->tm_mon, ptm->tm_year+1900);
return 0;
}