将 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;
}
我从我的 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;
}