L'Epoca

In Unix e Linux, le date sono sempre rappresentate internamente come il numero di secondi a partire dal 1° gennaio 1970 alle 00:00 del Tempo Medio di Greenwich (GMT, oggi UTC, o Tempo Universale Coordinato). Questa data originale viene talvolta chiamata "l'Epoca". In alcune situazioni negli script di shell è necessario convertire l'ora Unix in una data normale e viceversa.

Conversione di date

Una conversione può avvenire in entrambe le direzioni con il comando date. Con l'opzione -d si specifica la data da visualizzare (altrimenti date visualizzerà l'ora corrente). L'ora epocale è scritta semplicemente come un numero decimale preceduto da una @. Ad esempio, il 1234567890esimo secondo dall'epoca del febbraio 2009:

user@linux> date -d @1234567890
Sa 14. Feb 00:31:30 CET 2009

Al contrario, è possibile convertire una data in un timestamp Unix utilizzando un +%s come specifica di formato per date. In questo modo si otterrà l'ora corrente, ad esempio:

user@linux> date +%s

Per convertire un'ora particolare, è necessario specificarla nuovamente con -d. Sono ammesse diverse rappresentazioni. Per la conversione del 18.12.2008 alle 12:34 si specifica:

user@linux> date -d '2008-12-18 12:34:00' +%s
1229600040

Non dimenticare che l'indicazione dell'ora è sempre calcolata in UTC, a differenza della data scritta, che deve essere intesa in relazione al vostro fuso orario. Ecco perché si ottiene -3600 secondi in Germania quando si converte l'1.1.1970 in secondi:

user@linux> date -d '1970-01-01 00:00:00' +%s
-3600

Perché? Quando l'1.1.1970 erano le 00:00 in Germania, nel Regno Unito erano le 23:00 del giorno precedente (a Greenwich, a Londra).

Linux knowledge

Questi articoli sono stati scritti dal fondatore di Checkmk molti anni fa.
Tuttavia, sono ancora validi e quindi li conserviamo sul nostro sito web.
Da allora Mathias ha sviluppato un software di monitoraggio chiamato Checkmk.

Scopri di più