C 有人能告诉我为什么我的小时不打印实际的小时吗?
我不知道我的逻辑有什么问题:C 有人能告诉我为什么我的小时不打印实际的小时吗?,c,time,hour,C,Time,Hour,我不知道我的逻辑有什么问题: #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];
#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);
}
它没有显示错误,但我无法打印准确的小时。您的逻辑很好。只是你不住在附近。我不需要依赖那些手动转换,而是使用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);
}
这还考虑到了您正在观察的小时偏移量,我认为这是由于时区差异造成的。那么它显示了什么?这不是您当前的问题,但时间已经是标准库中某个函数的标识符。你用它来表达另一个意思,你看到了什么,你期待着什么?请注意,我猜您是在时区时间内离开的。请参阅@pmg Nice,但如果该网站也显示本地时间,则该网站会更有用。您不需要住在格林威治附近;您可以居住在格林威治经度的任何地方,即格林威治以北或以南、英国、爱尔兰、冰岛、葡萄牙和西非的一些国家: