Bagaimana saya bisa mendapatkan detik sejak zaman dalam Javascript?

152

Di Unix, saya bisa berlari date '+%s'untuk mendapatkan jumlah detik sejak zaman. Tapi saya perlu menanyakannya di front-end browser, bukan back-end.

Apakah ada cara untuk mengetahui detik sejak Epoch dalam JavaScript?

Alice
sumber

Jawaban:

246
var seconds = new Date() / 1000;

Atau, untuk versi yang kurang simpel:

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

Jangan lupa untuk Math.floor()atau Math.round()membulatkan ke bilangan bulat terdekat atau Anda mungkin mendapatkan desimal sangat aneh yang tidak Anda inginkan:

var d = new Date();
var seconds = Math.round(d.getTime() / 1000);
DVK
sumber
8
var seconds = new Date() / 1000;<- sihir misterius macam apa ini?
Martin Wickman
3
Re: arcane magic: Untuk dokumen-dokumen ini , Javascript tahu bagaimana mengonversi objek Date ke sebuah Number. Ini berarti bahwa Anda dapat mengetik Number(new Date())untuk mendapatkan angka, atau bahkan +(new Date()), atau menggunakan instance Date apa pun dalam konteks numerik seperti new Date()/1000dan Javascript akan sangat membantu mengkonversi instance Date itu menjadi sebuah angka untuk bekerja dengan persamaan matematika Anda.
dpmott
59

Coba ini:

new Date().getTime() / 1000

Anda mungkin ingin menggunakan Math.floor()atau Math.round()memotong fraksi milidetik.

Tomasz Nurkiewicz
sumber
39

Anda ingin detik sejak zaman

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

contoh penggunaan

foo = seconds_since_epoch();
pengguna40521
sumber
3
Ini harus menjadi jawaban karena memperhitungkan desimal.
James Pack
11

Solusi di atas menggunakan properti instance. Cara lain adalah dengan menggunakan properti kelas Date.now:

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

Jika Anda ingin time_in_seconds menjadi bilangan bulat, Anda memiliki 2 opsi:

Sebuah. Jika Anda ingin konsisten dengan pemotongan gaya C:

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

b. Jika Anda ingin memiliki definisi matematis tentang pembagian integer, tahan saja. (Divisi bilangan bulat Python melakukan ini).

time_in_seconds_int = Math.floor(time_in_seconds);
dotgc
sumber
9

Jika Anda hanya menginginkan detik sebagai bilangan bulat tanpa desimal yang mewakili milidetik, gunakan ini:

var seconds = Math.floor(new Date() / 1000);
Ryan Kreager
sumber
5

Anda dapat membuat objek Date (yang akan memiliki waktu saat ini di dalamnya) dan kemudian memanggil getTime()untuk mendapatkan ms sejak zaman.

var ms = new Date().getTime();

Jika Anda ingin detik, maka bagilah dengan 1000:

var sec = new Date().getTime() / 1000;
pacar00
sumber
4

Cara pilihan saya:

var msEpoch = (+new Date());
var sEpoch = (+new Date()) / 1000;

Untuk informasi lebih lanjut tentang + lompat ke lubang kelinci .

Vinay
sumber
1

Versi paling sederhana:

Math.floor(Date.now() / 1000) 
aristidesfl
sumber
0
EPOCH means time from 01 January 1970
var date = new Date();
Following line will return the number of milliseconds from 01 Jaunary 1970
var ms = date.getTime();
Following line will convert milliseconds to seconds
var seconds = Math.floor(ms/1000);
console.log("Seconds since epoch =",seconds);
Tanzeem Bhatti
sumber