有人可以告诉我为什么我的时间不打印实际时间吗?

时间:2019-10-29 08:24:31

标签: 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];
    int hour = (seconds % time[3])/time[2];

    printf("%d:%d:%d\n", hour, minute, second);

}

它没有显示错误,但是我无法打印准确的小时数。

2 个答案:

答案 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附近。