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?

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);

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.


39

Anda ingin detik sejak zaman

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

contoh penggunaan

foo = seconds_since_epoch();

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);

9

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

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

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;




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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.