Saya mencoba untuk mendapatkan perbedaan antara dua tanggal dalam hitungan detik. Logikanya akan seperti ini:
- tetapkan tanggal awal yang sekarang;
- tetapkan tanggal akhir yang akan menjadi tanggal awal ditambah sejumlah detik di masa mendatang (misalkan 15 misalnya)
- dapatkan perbedaan di antara keduanya (jumlah detik)
Alasan mengapa saya melakukannya dengan tanggal adalah karena tanggal / waktu akhir tergantung pada beberapa variabel lain dan tidak pernah sama (tergantung pada seberapa cepat pengguna melakukan sesuatu) dan saya juga menyimpan tanggal awal untuk hal-hal lain.
Saya sudah mencoba sesuatu seperti ini:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
Masalahnya adalah saya tidak pernah mendapatkan perbedaan yang tepat. Saya mencoba membagi dengan 24 * 60
yang akan meninggalkan saya dengan detik, tetapi saya tidak pernah melakukannya dengan benar. Jadi apa yang salah dengan logika saya? Saya mungkin membuat beberapa kesalahan bodoh karena sudah agak terlambat, tapi itu mengganggu saya bahwa saya tidak bisa membuatnya bekerja :)
sumber
Jawaban:
Kode
Atau bahkan lebih sederhana
(endDate - startDate) / 1000
seperti yang ditunjukkan dalam komentar kecuali Anda menggunakan naskah.Penjelasan
Anda perlu memanggil
getTime()
metode untukDate
objek, dan kemudian cukup kurangi dan bagi dengan 1000 (karena itu awalnya dalam milidetik). Sebagai tambahan, ketika Anda memanggilgetDate()
metode, Anda sebenarnya mendapatkan hari bulan sebagai bilangan bulat antara 1 dan 31 (bukan berbasis nol) sebagai lawan dari waktu yang Anda dapatkan dari memanggilgetTime()
metode, mewakili jumlah milidetik sejak 1 Januari 1970, 00:00Kata-kata kasar
Bergantung pada operasi tanggal terkait Anda, Anda mungkin ingin berinvestasi dalam mengintegrasikan perpustakaan seperti date.js atau moment.js yang membuat segalanya jauh lebih mudah bagi pengembang, tetapi itu hanya masalah preferensi pribadi.
Misalnya dalam moment.js kita akan melakukan
moment1.diff(moment2, "seconds")
yang indah.Dokumen yang berguna untuk jawaban ini
sumber
.valueOf()
, itulah yang-
akan disebut oleh operator dalam hal apa pun ...Anda dapat menggunakan
new Date().getTime()
untuk mendapatkan cap waktu. Kemudian Anda dapat menghitung perbedaan antara ujung dan mulai dan akhirnya mengubah timestamp yangms
menjadis
.sumber
sumber
Kode di bawah ini akan memberikan perbedaan waktu dalam detik.
sumber
coba gunakan fungsi khusus dari bahasa pemrograman tingkat tinggi. JavaScript
.getSeconds();
cocok di sini:sumber
perbedaan waktu antara sekarang dan 10 menit kemudian menggunakan momentjs
sumber