Konwersja czasu w formacie UNIX-a (C++)

Próbuję napisać funkcję konwertującą czas w formacie UNIX-a do czytelnej postaci. Z rokiem sobie poradziłem, ale dzień wydaje się trudniejszy niż na pierwszy rzut oka. Jak dotąd, mam coś takiego:

static _SYSTEMTIME Convert(unsigned long aUnixTime)
{       
    czas.wMilis = 0;
    czas.wRok   = (unsigned long)((float)aUnixTime / (364.24f * 24.f * 60.f * 60.f));
    czas.wDzien    = (aUnixTime - (unsigned long)((float)czas.wRok * 364.24f * 24.f * 60.f * 60.f)); // zwraca 65177

    return czas;
}

Czy ktoś może ma rozwiązanie takiej konwersji?

2 lata, 3 miesiące temu | edytowane przez: kroma 10915

  • Użyj gmtime z <time.h>. Zwraca strukturę tm, zdefiniowaną w tym samym nagłówku. Ma ona co najmniej następujące pola:

    struct tm * gmtime(const time_t *clock);
    
       int tm_sec;     /* seconds (0 - 60) */
       int tm_min;     /* minutes (0 - 59) */
       int tm_hour;    /* hours (0 - 23) */
       int tm_mday;    /* day of month (1 - 31) */
       int tm_mon;     /* month of year (0 - 11) */
       int tm_year;    /* year - 1900 */
       int tm_wday;    /* day of week (Sunday = 0) */
       int tm_yday;    /* day of year (0 - 365) */
       int tm_isdst;   /* is summer time in effect? */
       char *tm_zone;  /* abbreviation of timezone name */
       long tm_gmtoff; /* offset from UTC in seconds */
    

    Albo strftime() z localtime().

Zaloguj się, aby dodać swoją odpowiedź