将 unix 时间转换为可读时间

Converting unix time into readable time

我从我的 GPS 模块中获得了自 1970 年 1 月 1 日以来的 unix 时间(例如 1531074816),如何将其转换为可读格式?我只需要获取当前的小时、分钟和秒。我不担心日期或日期。 我也在用C。 谢谢。

如果您不想使用任何第三方代码,您可以按照以下步骤操作: 你应该首先在模运算符的帮助下摆脱 1970 年以来的所有日子。 然后你将有从当天开始以来的秒数。您可以使用此数字计算经过了多少小时。使用相同的方法,您可以获得分钟和秒数。

如果你的时间戳以秒为单位。那么:

long currentTime;
long oneDay = 24L * 60 * 60;
long oneHour = 60 * 60;
long oneMinute = 60;

long currentDaySeconds = currentTime % oneDay;
long currentHour = currentDaySeconds / oneMinute;
long currentMinute = (currentDaySeconds % oneHour) / oneMinute;
long currentSeconds = currentDaySeconds % oneMinute;

正如 Steve Summit 所说,最快最简单的方法就是使用 localtime():

void show_time (time_t time_from_gps)
{
    struct tm *timmay;

    timmay = localtime(&time_from_gps);
    printf("%02d:%02d:%02d\n", timmay->tm_hour, timmay->tm_min, timmay->tm_sec);
}

您真的不想尝试滚动您自己的时间程序。如果让 libc 为您处理复杂的事情,时间会很复杂,生活会轻松很多。

使用 gmtime

#include <stdio.h>
#include <time.h>

int main()
{
    static const time_t unixtimestamp = 1230728833;
    struct tm *tmp = gmtime(&unixtimestamp);


    printf("%02d:%02d:%02d\n", tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
    return 0;
}