apio
4c096bd36c
80 seconds -> 1 minute, 20 seconds for example 647 seconds would be 10 minutes, 47 seconds and more...
38 lines
1.5 KiB
C
38 lines
1.5 KiB
C
#include <stdio.h>
|
|
#include <time.h>
|
|
|
|
#define VALUE_SINGULAR_AT_ONE(v) v, v == 1 ? "" : "s"
|
|
|
|
int main()
|
|
{
|
|
struct timespec tp;
|
|
clock_gettime(CLOCK_MONOTONIC, &tp); // On Luna, CLOCK_MONOTONIC starts at boot.
|
|
|
|
struct tm* time = gmtime(
|
|
&tp.tv_sec); // just splitting the value into seconds, minutes, hours, days... not the best way to do it but ok.
|
|
time->tm_year -= 70;
|
|
|
|
if (time->tm_year)
|
|
{
|
|
printf("up for %d year%s, %d day%s, %d hour%s, %d minute%s, %d second%s\n",
|
|
VALUE_SINGULAR_AT_ONE(time->tm_year), VALUE_SINGULAR_AT_ONE(time->tm_yday),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_hour), VALUE_SINGULAR_AT_ONE(time->tm_min),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_sec));
|
|
}
|
|
else if (time->tm_yday)
|
|
{
|
|
printf("up for %d day%s, %d hour%s, %d minute%s, %d second%s\n", VALUE_SINGULAR_AT_ONE(time->tm_yday),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_hour), VALUE_SINGULAR_AT_ONE(time->tm_min),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_sec));
|
|
}
|
|
else if (time->tm_hour)
|
|
{
|
|
printf("up for %d hour%s, %d minute%s, %d second%s\n", VALUE_SINGULAR_AT_ONE(time->tm_hour),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_min), VALUE_SINGULAR_AT_ONE(time->tm_sec));
|
|
}
|
|
else if (time->tm_min)
|
|
printf("up for %d minute%s, %d second%s\n", VALUE_SINGULAR_AT_ONE(time->tm_min),
|
|
VALUE_SINGULAR_AT_ONE(time->tm_sec));
|
|
else
|
|
printf("up for %d second%s\n", VALUE_SINGULAR_AT_ONE(time->tm_sec));
|
|
} |