自1970年1月1日以来,我已经从我的GPS模块获得了unix时间(例如1531074816),如何将其转换为可读格式?我只需要获取当前的小时,分钟和秒。我不担心日期或日期。 我也在使用C。 谢谢。
答案 0 :(得分:2)
使用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;
}
答案 1 :(得分:1)
正如史蒂夫·萨米特(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为您处理复杂性,那么时间会很复杂,生活会容易得多。
答案 2 :(得分:0)
如果您不想使用任何第三方代码,可以遵循以下步骤: 自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;