/* * ptime — exercise POSIX . All wired through SDCC's z80.lib * time.rel which calls our RtcRead() (bridged to ESTEX SYSTIME). */ #include #include int main(void) { /* time() returns seconds since 1970-01-01 (Unix epoch). */ time_t now; time(&now); printf("time() = %lu epoch seconds\n", now); /* localtime() decomposes into struct tm. */ struct tm *lt = localtime(&now); printf("localtime() = %04d-%02d-%02d %02d:%02d:%02d (wday=%u)\n", lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec, (unsigned)lt->tm_wday); /* asctime() formats it as a 25-char string. */ printf("asctime() = %s", asctime(lt)); /* asctime adds \n */ /* mktime() round-trip — should recover the same epoch. */ time_t round = mktime(lt); printf("mktime() = %lu (round-trip %s original)\n", round, (round == now ? "==" : "!=")); /* Native datetime_t API still works alongside. */ datetime_t dt; getdatetime(&dt); printf("native = %04u-%02u-%02u %02u:%02u:%02u (dow=%u)\n", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, (unsigned)dt.dow); return 0; }