Pernahkah anda melihat pemberitahuan yang menunjukkan cap masa di mana-mana tapak web? Ia menunjukkan perkara seperti "12 minit lalu", "2 hari lalu", "10 jam lalu" dsb. Ia mempunyai kaitan dengan perbezaan cap masa antara dua tarikh atau masa.
Selain itu, beberapa apl menunjukkan bahawa peranti itu kali terakhir dilog masuk 22 jam yang lalu. Jadi mendapatkan perbezaan cap masa antara dua tarikh mempunyai banyak kegunaan.
Dalam tutorial ini, kita akan mempelajari cara yang berbeza untuk mendapatkan perbezaan cap masa relatif antara dua tarikh.
Dalam JavaScript, kita boleh menggunakan pembina Date() baharu untuk mencipta objek tarikh. Selain itu, kita boleh menghantar tarikh tertentu sebagai hujah kepada pembina Date() untuk memulakan objek tarikh dengan nilai tarikh tersebut.
KaedahgetTime() mengembalikan jumlah bilangan saat sejak 1 Januari 1970. Jadi kita boleh mencari jumlah milisaat kedua-dua tarikh dan kemudian menolaknya untuk mendapatkan perbezaan milisaat. Menggunakan milisaat itu, kita boleh mencari perbezaan cap masa dalam saat, minit, tahun, dsb.
Pengguna boleh mengikuti sintaks di bawah untuk mendapatkan perbezaan cap waktu relatif antara dua tarikh.
let second_diff = (current_date.getTime() - previous_date.getTime())/1000;
Dalam sintaks di atas, current_date dan previous_date ialah dua tarikh yang berbeza. Kami menggunakan kaedah getTime() untuk mendapatkan perbezaan milisaat antara dua tarikh.
Nota- Anda boleh mendapatkan perbezaan cap masa relatif dengan membandingkan nilai pembolehubah second_diff dengan milisaat.
Pengguna boleh mengikuti langkah di bawah untuk mencari cap waktu relatif antara dua tarikh dalam unit berbeza (seperti hari, bulan, tahun, dll.).
Langkah 1 - Buat dua tarikh berbeza.
Langkah 2 - Gunakan kaedah getTime() untuk mendapatkan jumlah milisaat dua tarikh dan dapatkan perbezaan antara keduanya. Selain itu, bahagikan perbezaan milisaat sebanyak 1000 untuk menukarnya kepada saat dan menyimpannya dalam pembolehubah secondary_diff.
Langkah 3 - Sekarang, gunakan pernyataan bersyarat if-else untuk mencari perbezaan cap masa relatif.
Langkah 4 - Jika nilai saat_beza kurang daripada 60, maka perbezaannya adalah dalam saat. Second_diff mempunyai nilai antara 60 dan 3600, dengan perbezaan dalam jam. Pengguna juga boleh mengira hari, bulan, dan tahun seperti ini.
Dalam contoh di bawah, kami telah mencipta dua objek tarikh berbeza menggunakan pembina Tarikh dan menggunakan langkah di atas untuk mencari cap masa relatif antara dua tarikh.
Dalam output, pengguna boleh melihat bahawa kod berikut mewakili perbezaan cap masa bulan.
<html> <body> <h3>Getting the relative timestamp difference between two dates using the <i> custom algorithm </i></h3> <p id="output"></p> <script> let output = document.getElementById("output"); // creating the current date let current_date = new Date(); // previous date let previous_date = new Date("jan 14, 2022 12:21:45"); // finding the difference in total seconds between two dates let second_diff = (current_date.getTime() - previous_date.getTime()) / 1000; output.innerHTML += "The first date is " + current_date + "</br>"; output.innerHTML += "The second date is " + previous_date + "</br>"; // showing the relative timestamp. if (second_diff < 60) { output.innerHTML += "difference is of " + second_diff + " seconds."; } else if (second_diff < 3600) { output.innerHTML += "difference is of " + second_diff / 60 + " minutes."; } else if (second_diff < 86400) { output.innerHTML += "difference is of " + second_diff / 3600 + " hours."; } else if (second_diff < 2620800) { output.innerHTML += "difference is of " + second_diff / 86400 + " days."; } else if (second_diff < 31449600) { output.innerHTML += "difference is of " + second_diff / 2620800 + " months."; } else { output.innerHTML += "difference is of " + second_diff / 31449600 + " years."; } </script> </body> </html>
Intl merujuk kepada API pengantarabangsaan. Ia mengandungi pelbagai kaedah pemformatan tarikh dan masa. Kita boleh menggunakan kaedah RelativeTimeFormat() objek Intl untuk mendapatkan cap waktu relatif antara dua tarikh.
Pengguna boleh menggunakan API RelativeTimeFormat() mengikut sintaks berikut untuk mendapatkan cap waktu relatif antara dua tarikh.
var relativeTimeStamp = new Intl.RelativeTimeFormat("en", { numeric: "auto",}); // compare the value of RelativeTimeStamp with milliseconds of different time units
Dalam sintaks di atas, kaedah RelativeTimeFormat() mengembalikan perbezaan cap waktu. time_Stamp_unit ialah objek yang mengandungi unit masa yang berbeza dan jumlah bilangan milisaatnya.
Langkah 1 - Buat objek unit yang mengandungi unit masa sebagai kunci dan jumlah bilangan milisaat sebagai nilai untuk unit masa itu.
Langkah 2 - Dapatkan perbezaan masa (dalam milisaat) antara dua tarikh.
Langkah 3 - Sekarang gunakan gelung for-in untuk mengulangi objek time_stamp_unit dan semak sama ada nilai second_diff lebih besar daripada jumlah milisaat masa tertentu; gunakan kaedah format (Relative TimeFor) API untuk memformat cap waktu unit tertentu itu.
Langkah 4 - Selepas itu, putuskan gelung for.
Dalam contoh di bawah, kami menggunakan kaedah RelativeTimeFomrat() untuk mendapatkan perbezaan cap waktu relatif antara dua tarikh seperti yang diterangkan dalam sintaks dan langkah di atas.
<html> <body> <h3>Getting the relative timestamp difference between two dates using the <i> RelativeTimeFormat() </i> method </h3> <p id="output"></p> <script> let output = document.getElementById("output"); let current_date = new Date(); let previous_date = new Date("jan 14, 2022 12:21:45"); // finding the difference in total seconds between two dates let second_diff = current_date.getTime() - previous_date.getTime(); output.innerHTML += "The first date is " + current_date + "</br>"; output.innerHTML += "The second date is " + previous_date + "</br>"; var time_Stamp_unit = { year: 31536000000, month: 31536000000 / 12, day: 86400000, hour: 3600000, minute: 60000, second: 1000, }; var relativeTimeStamp = new Intl.RelativeTimeFormat("en", { numeric: "auto", }); // iterate through all time stamps for (var ele in time_Stamp_unit) { // if second_diff's value is greater than particular timesapm unit's total millisecond value, format accordingly if (Math.abs(second_diff) > time_Stamp_unit[ele] || ele == "second") { output.innerHTML += "The difference between two dates is " + relativeTimeStamp.format( Math.round(second_diff / time_Stamp_unit[ele]), ele ); break; } } </script> </body> </html>
Pengguna belajar mencari cap masa relatif antara dua tarikh menggunakan penyataan if-else dan kaedah RelativeTimeFormat() API’s format(). Pengguna boleh menggunakan kedua-dua kaedah mengikut keperluan mereka.
Atas ialah kandungan terperinci Dapatkan perbezaan cap masa relatif antara tarikh dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!