Bagaimana untuk mengira bilangan hari antara dua tarikh?
P粉604848588
2023-08-23 16:51:49
<p>Sebagai contoh, dua tarikh diberikan dalam kotak input: </p>
<pre class="brush:php;toolbar:false;"><input id="first" value="1/1/2000"/>
<input id="second"nilai="1/1/2001"/>
<skrip>
alert(datediff("hari", pertama, kedua));
</script></pre>
<p>Bagaimana untuk mendapatkan bilangan hari antara dua tarikh dalam JavaScript? </p>
Setakat artikel ini ditulis, hanya satu daripada jawapan lain yang mengendalikan penukaran DST (Masa Penjimatan Siang) dengan betul. Berikut adalah keputusan pada sistem yang terletak di California:
Walaupun
Math.round
mengembalikan hasil yang betul, saya rasa ia agak kekok. Sebaliknya, dengan mengambil kira secara jelas perubahan dalam offset UTC apabila DST bermula atau tamat, kita boleh menggunakan aritmetik tepat:Arahan
Pengiraan tarikh JavaScript adalah rumit kerana
Date
objek menyimpan masa UTC secara dalaman, bukan waktu tempatan. Contohnya, 3/10/2013 12:00 PG Waktu Standard Pasifik (UTC-08:00) disimpan sebagai 3/10/2013 8:00 PG UTC dan 3/11/2013 12:00 PG Waktu Siang Pasifik ( UTC-07:00) disimpan sebagai 3/11/2013 7:00 AM UTC. Pada hari ini, waktu tempatan dari tengah malam hingga tengah malam hanya 23 jam lebih awal daripada UTC!Walaupun sehari dalam waktu tempatan boleh menjadi lebih atau kurang daripada 24 jam, sehari dalam UTC sentiasa tepat 24 jam. 1
daysBetween
方法利用了这一点通过首先调用treatAsUTC
yang ditunjukkan di atas melaraskan dua waktu tempatan kepada UTC tengah malam dan kemudian melakukan penolakan dan pembahagian untuk memahami fakta ini.1. JavaScript mengabaikan saat lompat.
Berikut adalah
datediff
cepat dan kotorpelaksanaan sebagai bukti konsep untuk menyelesaikan masalah yang dikemukakan dalam soalan. Ia bergantung pada fakta bahawa anda boleh mendapatkan bilangan milisaat yang berlalu antara dua tarikh dengan menolaknya, yang memaksa mereka kepada nilai berangka asalnya (bilangan milisaat sejak awal tahun 1970).