我不知道我的逻辑出了什么问题
#include <stdio.h>
#include <time.h>
int main() {
time_t seconds=time(NULL);
int time[5] = { 1,60,3600,86400,31536000 };
int second = (seconds % time[1])/time[0];
int minute = (seconds % time[2])/time[1];
int hour = (seconds % time[3])/time[2];
printf("%d:%d:%d\n", hour, minute, second);
}
它没有显示错误,但是我无法打印准确的小时数。
答案 0 :(得分:4)
我将不再使用那些手动转换,而只是使用struct tm
并将转换留给localtime
函数:
#include <time.h>
int main() {
time_t now;
struct tm *now_tm;
int hour, minute, second;
now = time(NULL);
now_tm = localtime(&now);
hour = now_tm->tm_hour;
minute = now_tm->tm_min;
second = now_tm->tm_sec;
printf("%d:%d:%d\n", hour, minute, second);
}
这还可以照顾您正在观察的小时偏移量,我认为这是由于时区差异造成的。
答案 1 :(得分:2)
您的逻辑很好。只是您不在Greenwich, London附近。