Ini adalah foto serpihan yang saya ingin buat aplikasi solat yang memberitahu anda berapa banyak masa yang tinggal antara waktu semasa dan waktu solat
Saya cuba mencari perbezaan secara langsung dengan melakukan ini
prayers = [[13,59], [13,30]]; let time = new Date(); let currprayer = new Date(); for (let index in prayers) { currprayer.setHours(prayers[index][0]) currprayer.setMinutes(prayers[index][1]) if (currprayer.getTime() > time.getTime()){ currprayer.setSeconds(00) let left = new Date(currprayer.getTime() - time.getTime() ); document.getElementById('nextmin').innerHTML = left.getMinutes() document.getElementById('nexthrs').innerHTML = left.getHours() document.getElementById('nextsec').innerHTML = left.getSeconds() } else{ console.log("nope") } }
<div class="details"> <div class="next-prayer"> <span id="nexthrs">00</span> <span>:</span> <span id="nextmin">00</span> <span>:</span> <span id="nextsec">00</span> </div> </div>
Tetapi ia terus tersekat pada 00:00:00
Anda boleh mendapatkan cap masa kedua-duanya, tolakkannya dan tukar hasilnya kepada format tarikh baharu, bukan? Semak pautan untuk melakukan ini: https://plainenglish.io/blog/Cara menukar rentetan tarikh kepada cap masa dalam JavaScript
Masalahnya ialah zaman hari ini mungkin sudah berlalu. Tangkapan skrin anda menunjukkan 19:24 waktu tempatan, yang jelas lewat daripada dua kali dalam tatasusunan
prayers
. Dalam kes ini, anda harus mencari masa keesokan harinya.Jika dalam kes ini anda mahukan masa sebelum solat seterusnya satu hari tambah satu lagi entri dalam array dengan 24 jam lebih masa daripada yang pertama. Untuk melakukan ini, anda mesti terlebih dahulu memastikan masa disenaraikan dalam susunan kronologi (yang tidak berlaku dalam coretan contoh)
Begini cara anda boleh melakukannya (lihat komen dalam kod):