Javascript'te dönemden bu yana nasıl saniye alabilirim?


152

Unix'te, date '+%s'dönemden bu yana geçen saniye miktarını almak için çalışabilirim . Ama bunu bir tarayıcı ön uçta sorgulamam gerekiyor, arka uçta değil.

JavaScript'te Epoch'tan bu yana saniye bulmanın bir yolu var mı?

Yanıtlar:


246
var seconds = new Date() / 1000;

Veya daha az karmaşık bir sürüm için:

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

En yakın tam sayıya yuvarlamayı Math.floor()ya Math.round()da yuvarlamayı unutmayın ya da istemediğiniz çok garip bir ondalık sayı elde edebilirsiniz:

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

8
var seconds = new Date() / 1000;<- Bu ne tür bir sır büyüsü?
Martin Wickman

3
Re: arcane magic: Bu dokümanlar başına , Javascript bir Date nesnesinin bir sayıya nasıl dönüştürüleceğini bilir. Bu, Number(new Date())bir sayı almak için yazabileceğiniz ya da hatta +(new Date())herhangi bir Date örneğini sayısal bir bağlamda kullanabileceğiniz anlamına gelir new Date()/1000ve Javascript bu Date örneğini matematik denklemlerinizle çalışmak için yararlı bir sayıya dönüştürür.
dpmott

59

Bunu dene:

new Date().getTime() / 1000

Milisaniye kesirini kullanmak Math.floor()veya Math.round()kesmek isteyebilirsiniz .


39

Dönemden beri saniyeler istedin

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

örnek kullanım

foo = seconds_since_epoch();

3
Bu, ondalık sayıyı hesaba kattığı için cevap olmalıdır.
James Pack

11

Yukarıdaki çözümler örnek özelliklerini kullanır. Başka bir yol da class özelliğini kullanmaktır Date.now:

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

Time_in_seconds değerinin bir tamsayı olmasını istiyorsanız 2 seçeneğiniz vardır:

a. C stili kısaltmasıyla tutarlı olmak istiyorsanız:

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

b. Eğer tamsayı bölümünün matematiksel tanımına sahip olmak istiyorsanız, sadece yere girin. (Python'un tamsayı bölümü bunu yapar).

time_in_seconds_int = Math.floor(time_in_seconds);

9

Milisaniyeyi temsil eden ondalık sayılar hala bağlı olmadan tam sayı olarak yalnızca saniyeler istiyorsanız , bunu kullanın:

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

5

Bir Date nesnesi oluşturabilirsiniz (içinde geçerli saati olacaktır) ve sonra getTime()çağdan beri ms'yi almak için çağrı yapabilirsiniz .

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

Saniyeler istiyorsanız, 1000'e bölün:

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.