Saya ingin menghitung perbedaan tanggal dalam hari, jam, menit, detik, milidetik, nanodetik. Bagaimana saya bisa melakukannya?
javascript
datetime
Farhan Siddiqui
sumber
sumber
Jawaban:
Dengan asumsi Anda memiliki dua
Date
objek , Anda bisa menguranginya untuk mendapatkan perbedaan dalam milidetik:Dari sana, Anda dapat menggunakan aritmatika sederhana untuk mendapatkan nilai-nilai lainnya.
sumber
Math.floor((date2 - date1) / (1000*60*60*24))
- untuk selisih pada unit lain, sesuaikan penyebutnya (nilai dasarnya adalah dalam ms).Sampel kode diambil dari sini .
sumber
Solusi lain adalah mengonversi perbedaan ke objek Tanggal baru dan mendapatkan tahun tanggal itu (beda dari 1970), bulan, hari dll.
Jadi perbedaannya seperti "3 tahun 6 bulan dan 4 hari". Jika Anda ingin mengambil perbedaan dalam gaya yang dapat dibaca manusia, itu dapat membantu Anda.
sumber
Ekspresi seperti "perbedaan hari" tidak pernah sesederhana kelihatannya. Jika Anda memiliki tanggal berikut:
perbedaan waktu adalah 2 menit, haruskah "perbedaan hari" menjadi 1 atau 0? Masalah serupa muncul untuk setiap ekspresi perbedaan dalam bulan, tahun, atau apa pun karena tahun, bulan, dan hari memiliki panjang dan waktu yang berbeda (misalnya hari mulai penghematan siang hari adalah 1 jam lebih pendek dari biasanya dan dua jam lebih pendek dari hari yang Ini berakhir).
Berikut adalah fungsi untuk perbedaan hari yang mengabaikan waktu, yaitu untuk tanggal di atas ia mengembalikan 1.
Ini bisa lebih ringkas:
sumber
sumber
gunakan Moment.js untuk semua perhitungan tanggal-waktu terkait JavaScript Anda
Jawaban untuk pertanyaan Anda adalah:
Detail lengkap dapat ditemukan di sini
sumber
sumber
Dengan momentjs itu sederhana:
sumber
sumber
Maaf tetapi perhitungan milidetik datar tidak dapat diandalkan Terima kasih atas semua tanggapan, tetapi beberapa fungsi yang saya coba gagal pada 1. Tanggal dekat tanggal hari ini 2. Tanggal di tahun 1970 atau 3. Tanggal di tahun kabisat.
Pendekatan yang paling berhasil bagi saya dan mencakup semua skenario misalnya tahun kabisat, hampir tanggal pada tahun 1970, feb 29 dll.
sumber
Jika Anda menggunakan moment.js maka cukup mudah untuk menemukan perbedaan tanggal.
sumber
sumber
Saya pikir ini harus dilakukan.
sumber
Ini adalah bagaimana Anda dapat mengimplementasikan perbedaan antara tanggal tanpa kerangka kerja.
sumber
sumber
Oke, ada banyak cara untuk melakukannya. Ya, Anda dapat menggunakan JS tua biasa. Coba saja:
Mari kita meniru bagian menggunakan Date.prototype.setMinutes dan pastikan kita berada dalam jangkauan.
Atau Anda dapat menggunakan beberapa perpustakaan seperti js-joda , di mana Anda dapat dengan mudah melakukan hal-hal seperti ini (langsung dari dokumen):
Ada lebih banyak perpustakaan ofc, tetapi js-joda memiliki bonus tambahan yang tersedia juga di Jawa, di mana ia telah diuji secara luas. Semua tes tersebut telah dimigrasikan ke js-joda, itu juga tidak berubah.
sumber
ini akan berfungsi dengan baik jika Anda hanya perlu menunjukkan waktu yang tersisa, karena JavaScript menggunakan bingkai untuk waktunya Anda akan mendapatkan Waktu Akhir Anda - Waktu RN setelah itu kami dapat membaginya dengan 1000 karena ternyata 1000 frame = 1 detik, setelah itu Anda dapat menggunakan matematika dasar waktu, tetapi masih ada masalah dengan kode ini, karena perhitungannya statis, itu tidak dapat mengkompensasi total hari yang berbeda dalam setahun (360/365/366), kumpulan dari JIKA setelah perhitungan adalah menjadikannya nol jika waktunya lebih rendah dari 0, harap ini membantu walaupun itu bukan yang Anda minta :)
sumber