Πώς λαμβάνετε μια χρονοσφραγίδα στη JavaScript;

Πώς μπορώ να λάβω μια χρονοσφραγίδα σε JavaScript;

Κάτι παρόμοιο με το Unix timestamp, δηλαδή έναν απλό αριθμό που αντιπροσωπεύει την τρέχουσα ώρα και ημερομηνία. Είτε ως αριθμός είτε ως συμβολοσειρά.

Λύση

Σύντομο & κομψό:

+ new Date()

Ένας μοναδιαίος τελεστής όπως ο plus ενεργοποιεί τη μέθοδο valueOf στο αντικείμενο Date και επιστρέφει τη χρονοσφραγίδα (χωρίς καμία μεταβολή).

Περιγραφές:

Σχεδόν σε όλα τα τρέχοντα προγράμματα περιήγησης μπορείτε να χρησιμοποιήσετε την [Date.now()][1] για να λάβετε τη χρονοσφραγίδα UTC σε χιλιοστά του δευτερολέπτου- μια αξιοσημείωτη εξαίρεση σε αυτό είναι ο IE8 και παλαιότερα (δείτε τον [πίνακα συμβατότητας][3]).

Μπορείτε εύκολα να φτιάξετε ένα shim για αυτό, όμως:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Για να λάβετε τη χρονοσφραγίδα σε δευτερόλεπτα, μπορείτε να χρησιμοποιήσετε:

Math.floor(Date.now() / 1000)
Date.now() / 1000 | 0

Το οποίο θα είναι ελαφρώς ταχύτερο, αλλά και λιγότερο ευανάγνωστο (επίσης [δείτε αυτή την απάντηση][2]).

Θα συνιστούσα τη χρήση της Date.now() (με συμβατότητα shim). Είναι ελαφρώς καλύτερη επειδή είναι συντομότερη & δεν δημιουργεί ένα νέο αντικείμενο Date. Ωστόσο, αν δεν θέλετε shim &; μέγιστη συμβατότητα, θα μπορούσατε να χρησιμοποιήσετε τη μέθοδο "old" για να λάβετε τη χρονοσφραγίδα σε milliseconds:

new Date().getTime()

Το οποίο μπορείτε στη συνέχεια να μετατρέψετε σε δευτερόλεπτα ως εξής:

Math.round(new Date().getTime()/1000)

Και μπορείτε επίσης να χρησιμοποιήσετε τη μέθοδο valueOf που δείξαμε παραπάνω:

new Date().valueOf()

Χρονοσφραγίδα σε χιλιοστά του δευτερολέπτου

Σχόλια (16)
var time = Date.now || function() {
  return +new Date;
};

time();
Σχόλια (5)
var timestamp = Number(new Date()); // current time as number
Σχόλια (0)