time_t e l'Epoch Unix
In ambiente POSIX, time_t rappresenta il tempo in secondi dall'Epoch. Il solo linguaggio C non garantisce questa rappresentazione su ogni piattaforma. Non presumere nemmeno che time_t sia sempre a 32 bit.
Visualizzare un timestamp in UTC
#include <stdio.h>
#include <time.h>
int main(void) {
time_t timestamp = (time_t)1711972800;
struct tm *utc = gmtime(×tamp);
char output[32];
if (utc == NULL) return 1;
if (strftime(output, sizeof output,
"%Y-%m-%dT%H:%M:%SZ", utc) == 0) return 1;
puts(output); /* 2024-04-01T12:00:00Z */
return 0;
}Calcolare una differenza
difftime(end, start) calcola una differenza in secondi senza presumere direttamente il tipo aritmetico sottostante di time_t.
time_t start = (time_t)1711972800;
time_t end = (time_t)1711981800;
double elapsed = difftime(end, start);
/* elapsed = 9000.0 */Cosa controllare
gmtimevisualizza l'UTC;localtimeusa il fuso orario locale.- Le funzioni storiche possono usare memoria condivisa. In un programma POSIX concorrente, valuta
gmtime_relocaltime_r. mktimeinterpreta una data locale. Non usarlo come convertitore UTC implicito.- Per misurare il tempo di esecuzione su POSIX, usa
clock_gettime(CLOCK_MONOTONIC, ...).
Controlla dimensione e capacità della libreria per le date oltre il 2038. Il tipo di processore da solo non determina tutti i formati gestiti.
Riferimenti
Versione italiana pubblicata il 26 settembre 2026.