datetime - Hur kan jag få sekunder sedan epoken i Javascript?


På Unix kan jag köra date '+%s' för att få antalet sekunder sedan epok. Men jag behöver fråga det i en webbläsarfront-end, inte back-end.

Finns det ett sätt att ta reda på sekunder sedan Epoch i JavaScript?

Svar #1

var seconds = new Date() / 1000;

Eller, för en mindre hackig version:

var d = new Date();
var seconds = d.getTime() / 1000;

Glöm inte att Math.floor() eller Math.round() för att avrunda till närmaste heltal, annars kan du få ett mycket konstigt decimaltal som du inte vill ha:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);

Svar #2

Prova detta:

new Date().getTime() / 1000

Du kanske vill använda Math.floor() eller Math.round() för att ta bort millisekundbråket.

Svar #3

Du ville ha sekunder sedan epoken

function seconds_since_epoch(){ return Math.floor( Date.now() / 1000 ) }

exempel användning

foo = seconds_since_epoch();

Svar #4

Ovanstående lösningar använder instansattribut. Ett annat sätt är att använda klassattributet Date.now:

var time_in_millis = Date.now();
var time_in_seconds = time_in_millis / 1000;

Om du vill att time_in_seconds ska vara ett heltal har du 2 alternativ:

a. Om du vill vara konsekvent med C-stilens trunkering:

time_in_seconds_int = time_in_seconds >= 0 ?
                      Math.floor(time_in_seconds) : Math.ceil(time_in_seconds);

b. Om du bara vill att den matematiska definitionen av heltalsdivision ska gälla, ta bara golvet. (Pythons heltalsdivision gör detta).

time_in_seconds_int = Math.floor(time_in_seconds);

Svar #5

Om du vill ha endast sekunder som ett heltal utan decimaler som representerar millisekunder som fortfarande är kopplade, använd detta:

var seconds = Math.floor(new Date() / 1000);

Relaterade artiklar