Ini adalah pertanyaan yang diajukan oleh seorang teman dalam grup. Pada saat itu, saya mengatakan bahwa saya bisa menilai apakah hari itu berdekatan. Kemudian, saya memikirkannya dengan hati -hati dan menemukan bahwa itu benar -benar salah.
Persyaratan masalah
Diberikan 5 tanggal dari format yang sama, bagaimana Anda menentukan apakah itu 5 hari berturut -turut?
Reaksi pertama saya adalah GetDay () dan mengurutkannya, dan kemudian membandingkannya sebelum dan sesudah. .
Tetapi jika Anda memikirkannya dengan cermat, itu benar -benar salah. Misalnya, ini juga akan salah menilai.
Dan itu bukan hanya masalah seperti itu, tetapi juga melintasi bulan, Malam Tahun Baru, Bulan LEAP dan masalah lainnya.
Lalu ada kode berikut.
Biarkan cap waktu menghaluskan segalanya
Agar tidak khawatir tentang masalah ini, saya memikirkan cap waktu, dan orang ini dapat sepenuhnya mengabaikan masalah di atas. Cukup proses cap waktu dan bandingkan pada akhirnya.
Lalu saya memberikan kode berikut:
Let Days = ['2016-02-28', '2016-02-29', // leap month'2016-03-01 ', // Cross Month'2016-03-02', '2016-03-03',] // urutkan lebih dulu, lalu putar timestamp let _days = days.sort (). dt.setDate (dt.getDate () + 4 - i) // diproses sebagai tanggal yang sama kembali + dt}) // Bandingkan apakah cap waktu adalah konsol yang sama. _days [4])
Ok semua masalah telah diselesaikan, dan tidak masalah jika Anda melintasi tahun baru, melintasi bulan, atau bulan lompatan.
Enkapsulasi Fungsi Umum
Kode di atas masih sedikit cacat, karena waktu, menit dan kedua tidak diproses, dan jika ada waktu, menit dan kedua, Anda juga harus menghapusnya terlebih dahulu.
Let Days = ['2016-02-28 12:00:00', '2016-02-29 12:00:01', // LEAP MONTH'2016-03-01 12:00:02 ' 12:00:04 ',] console.log (lanjutan (hari)) fungsi lanjutan (arr_days) {// urutkan lebih dulu, lalu putar timestamp let days = arr_days.sort (). Peta ((d, i) => {let dt = tanggal baru (d) dt.setDate (dt.getDate () + 4 - i) milidonds, dt.setMinutes (0) dt.setseconds (0) dt.setmilliseconds (0) return +dt}) Biarkan ret = true days.foreach (d => {if (days [0]! == d) {ret = false}}) ret}Fungsi ini baru saja diubah di 2 tempat, penghapusan waktu, menit, kedua, milidetik dan perbandingan loop, dan yang lainnya sama.
ringkasan
Waktu pemrosesan JS masih sangat sederhana. Misalnya, menulis plug-in tanggal sebenarnya sangat mudah diimplementasikan dengan bantuan tanggal, tetapi Anda perlu memahami API tanggal.
Tentu saja, untuk mengatakan bahwa itu sederhana, atau PHP adalah yang paling sederhana, itu luar biasa.
Contoh sederhana di atas untuk menilai apakah satu set tanggal terus menerus adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.