Corsi on-line

Gestire Timestamp con JavaScript

Lo Unix Timestamp (o marca temporale) è un formato per la rappresentazione del tempo che individua il momento corrente (“offset”) sulla base di un periodo iniziato nella mezzanotte del I gennaio 1970 (“epoca”); rispetto alle comuni modalità per la registrazione delle date lo Unix Timestamp ha il vantaggio di non dipendere dai fusi orari, inoltre, esso può essere manipolato con semplici funzioni matematiche come quelle utilizzare dai linguaggi di programmazione e scripting.

javascript_logoIn JavaScript abbiamo due procedure distinte per ottenere il Timestamp del momento corrente, il primo si basa sull’utilizzo di Date.now() a cui non va passato alcun parametro, il secondo richiede un’istanza dell’oggetto Date() e la chiamata al metodo getTime(); potremmo quindi ottenere il medesimo risultato con le seguenti istruzioni:

const dateTime = Date.now();
const timestamp = Math.floor(dateTime / 1000);

così come con:

const dateTime = new Date().getTime();
const timestamp = Math.floor(dateTime / 1000);

floor() è un metodo dell’oggetto Math che produce un arrotondamento per difetto del valore che gli viene passato come argomento, in sostanza arrotonda un valore adottato come parametro fino all’intero inferiore più prossimo, ad esempio “1.6” verrebbe arrotondato in “1”. Lo stesso metodo potrebbe essere utilizzato per ottenere un Timestamp da una data specifica.

Nel caso specifico dell’esempio seguente passeremo all’istanza dell’oggetto Date() (o meglio al suo costruttore) una data nel formato “YYYY-MM-DD” (cioè “anno-mese-giorno”), ma saremmo potuti essere più specifici richiedendo il Timestamp di una stringa comprendente anche ore, minuti e secondi (“YYYY-MM-DDT00:00:00Z”):

const dateTime = new Date('2016-11-24').getTime();
const timestamp = Math.floor(dateTime / 1000);

getTime() è un metodo che restituisce il valore espresso in millisecondi del tempo passato dal I gennaio 1970, in pratica un Timestamp che nel caso di “2016-11-24” sarà uguale a “1479945600”.

Volendo creare una semplice funzione in grado di stampare a video il timestamp della data corrente potremmo lavorare in questo modo:

<!DOCTYPE html>
<html>
<body>
<p>Clicca il pulsante per ottenere il Timestamp corrente.</p>
<button onclick="getTimestamp()">Richiedi Timestamp</button>
<p id="tsmp"></p>
<script>
function getTimestamp() {
    var dateTime = new Date().getTime();
    var timestamp = Math.floor(dateTime / 1000);
    document.getElementById('tsmp').innerHTML = timestamp;
}
</script>
</body>
</html>

Per completezza è possibile segnalare che getTime() potrebbe essere omesso facendo precedere l’oggetto Date() dal segno “+“, in questo modo:

const dateTime = +new Date();
const timestamp = Math.floor(dateTime / 1000);

Tale sintassi sarebbe valida anche nel caso in cui volessimo passare al costruttore di Date() una data specifica.

Post correlati
I più letti del mese
Tematiche