Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 有人能告诉我为什么我的小时不打印实际的小时吗?_C_Time_Hour - Fatal编程技术网

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,但如果该网站也显示本地时间,则该网站会更有用。您不需要住在格林威治附近;您可以居住在格林威治经度的任何地方,即格林威治以北或以南、英国、爱尔兰、冰岛、葡萄牙和西非的一些国家: