Geçerli tarihi / saati saniye cinsinden alma


Yanıtlar:


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

.... gece yarısından bu yana saniyeler verecek, 1 Ocak 1970

Referans


13
Bu doğru olsa da, ne zaman yararlı olur? :)
Nick Craver

6
@Nick - Bence tüm örnekler mutlaka spekülatiftir ve kulağa hoş gelecektir - ama bir çekim yapacağım :) Unix zamanla damgalanmış veri zamanınız olduğunu ve yaşını belirlemek istediğinizi varsayalım. Daha çok sanırım bu 'saniyelerdeki güncel tarih / saat' ile kastedilen şeydir; sadece bağırsak hissim.
sje397

3
Bu gerekli bir uygulama time () işlevi zaten bu döndürür gibi bir PHP arka ucu ile çalışmak oldu. Bir zaman damgası için de harika çünkü zaman () şu anki zamanımız olan ve bir veritabanında saklanan bir önceki zamandan bir zaman damgası arasındaki farkı bir kullanıcının bir şey gönderdiğinde kolayca alabilirsiniz. '22 Ekim 2015' gibi biçimlendirilmiş bir zaman almak istiyorsanız, zaman damgasından argüman olarak dönmek için kendi işlevinizi oluşturabilir veya Stack'te zaten bir tane kullanabilirsiniz. Her neyse, umarım bunun ne zaman yararlı olacağına dair bir fikir verir. @NickCraver
uhfocuz

21
Math.floor () içinde bunu sarmak istediğinizi belirtmek gerekir, aksi takdirde bir ondalık sayı elde edersiniz.
David Webber

11
Bunun yararlı olabilmesinin bir yolu, iki kez geçen süreyi hesaplamak olacaktır.
Zac


65

Kullanmak new Date().getTime() / 1000, saniyeleri elde etmek için eksik bir çözümdür, çünkü kayan noktalı birimlerle zaman damgaları üretir.

const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds. 

Daha iyi bir çözüm:

// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937

// - OR -

// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936

Şamandıra içermeyen değerler koşullu ifadeler için de daha güvenlidir, çünkü şamandıra istenmeyen sonuçlar üretebilir. Bir şamandıra ile elde ettiğiniz ayrıntı düzeyi gerekenden fazla olabilir.

if (1405792936.993 < 1405792937) // true

1
Tamamen katılıyorum 👍 KullanımMath.round(new Date() / 1000)
gdibble

37

Yorumunuza dayanarak, böyle bir şey arıyorsanız düşünüyorum:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

Sonra kontrolünüzde şunları kontrol ediyorsunuz:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}

16

Javascript çağından saniye sayısını almak için şunu kullanın:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;

9

// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)

// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000));  // 1443535752
console.log(Math.floor(Date.now() / 1000));            // 1443535752
console.log(Math.floor(new Date().getTime() / 1000));  // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jQuery

console.log(Math.floor($.now() / 1000));               // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


3

Bu JavaScript çözümleri size 1 Ocak 1970 gece yarısından bu yana geçen milisaniye veya saniyeyi verir.

IE 9+ çözümü (IE 8 veya daha eski sürüm bunu desteklemez.):

var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
    timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
    timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.

Hakkında daha fazla bilgi almak için Date.now(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

Genel çözüm:

// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
    timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
    timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.

Böyle bir şey istemiyorsanız kullanmaya dikkat edin.

if(1000000 < Math.round(1000000.2)) // false.

2
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

Bu size günün başından itibaren milisaniye vermelidir.

(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000

Bu size saniye vermelidir.

(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000

Önceki miktarla aynıdır, ancak gün miktarını katlamak için bitsel bir operatör kullanır.


1

1 Ocak 1970'ten bu yana saniye / milisaniye cinsinden zaman almak için başka bir yolla tanışabilirsiniz:

var milliseconds = +new Date;        
var seconds = milliseconds / 1000;

Ancak böyle bir yaklaşıma dikkat edin, çünkü bunu okumak ve anlamak zor olabilir.


Bilmiyorum çünkü dilin yan etkilerini kullanırken daha zarif bir yol.
tomazahlin

1

Daha iyi kısa yollar:

+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch

0

2020'de bir gün, Chrome 80.0.3987.132'nin içinde, bu 1584533105

~~(new Date()/1000) // 1584533105
Number.isInteger(~~(new Date()/1000)) // true

-1

Günün toplam saniyesini almak için:

getTodaysTotalSeconds(){
    let date = new Date();        
    return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}

+Hangi karşılığında iade eklemek var int. Bu diğer geliştiricilere yardımcı olabilir. :)

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.