关于C#:将unix时间转换为可读时间

Converting unix time into readable time

我从1970年1月1日起就有了Unix时间(例如1531074816),如何将其转换为可读格式?我只需要得到当前的小时、分钟和秒。我不担心日期和日期。我也在用C。谢谢。


使用gmtime

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <time.h>

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


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

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

1
2
3
4
5
6
7
8
void show_time (time_t time_from_gps)
{
    struct tm *timmay;

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

你真的不想尝试改变你自己的时间程序。时间是复杂的,如果你让libc为你处理复杂的事情,生活就容易得多。


如果您不想使用任何第三方代码,可以执行以下操作:你应该首先在模运算符的帮助下摆脱自1970年以来的所有日子。那么,从今天开始,您就已经过了几秒钟。您可以使用这个数字计算通过的小时数。用同样的方法,你可以得到分钟和秒。

如果时间戳以秒为单位。然后:

1
2
3
4
5
6
7
8
9
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;