Jawaban:
var seconds = new Date().getTime() / 1000;
.... akan memberi Anda detik sejak tengah malam, 1 Januari 1970
Date.now()
memberikan milidetik sejak zaman. Tidak perlu digunakan new
.
Lihatlah referensi di sini: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
(Tidak didukung di IE8.)
Menggunakan new Date().getTime() / 1000
adalah solusi yang tidak lengkap untuk mendapatkan detik, karena menghasilkan cap waktu dengan unit floating-point.
const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds.
Solusi yang lebih baik adalah:
// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937
// - OR -
// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936
Nilai tanpa pelampung juga lebih aman untuk pernyataan bersyarat, karena pelampung dapat menghasilkan hasil yang tidak diinginkan. Granularitas yang Anda dapatkan dengan float mungkin lebih dari yang dibutuhkan.
if (1405792936.993 < 1405792937) // true
Math.round(new Date() / 1000)
Berdasarkan komentar Anda, saya pikir Anda sedang mencari sesuatu seperti ini:
var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;
Kemudian di cek Anda, Anda memeriksa:
if(new Date().getTime() > timeout) {
alert("Session has expired");
}
// 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>
Solusi JavaScript ini memberi Anda milidetik atau detik sejak tengah malam, 1 Januari 1970.
Solusi IE 9+ (IE 8 atau versi yang lebih lama tidak mendukung ini.):
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.
Untuk mendapatkan informasi lebih lanjut tentang Date.now()
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
Solusi umum:
// ‘+’ 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.
Berhati-hatilah untuk menggunakannya, jika Anda tidak menginginkan sesuatu seperti kasing ini.
if(1000000 < Math.round(1000000.2)) // false.
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000
Ini akan memberi Anda milidetik sejak awal hari.
(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000
Ini akan memberi Anda waktu sebentar.
(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000
Sama seperti sebelumnya kecuali menggunakan operator bitwise untuk mengurangi jumlah hari.
Anda dapat bertemu dengan cara lain untuk mendapatkan waktu dalam detik / milidetik sejak 1 Jan 1970:
var milliseconds = +new Date;
var seconds = milliseconds / 1000;
Tapi hati-hati dengan pendekatan seperti itu, karena mungkin sulit untuk membaca dan memahaminya.
Jalan pintas yang lebih baik:
+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch
Untuk mendapatkan detik total hari ini:
getTodaysTotalSeconds(){
let date = new Date();
return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}
Saya telah menambahkan +
balasan yang kembali int
. Ini dapat membantu pengembang lain. :)