Baru -baru ini saya menemukan halaman kueri dalam sebuah proyek, di mana kondisi kueri adalah untuk menampilkan jumlah hari ke hari yang dipilih dalam seminggu berdasarkan nomor tahun, bulan dan minggu yang dipilih. Saya mencari secara online dan menemukan bahwa ada yang serupa tetapi tidak persis sama, jadi saya harus melakukannya sendiri. Idenya adalah untuk pertama -tama mendapatkan hari dalam seminggu pada tanggal 1 tahun dan bulan tahun ini, dan kemudian menghitung tanggal Senin dalam seminggu.
Mengambil ini sebagai poin dasar, hari akhir minggu pertama ditambahkan hingga hari ini, hari awal minggu kedua ditambahkan hingga hari ini, hari akhir ditambahkan ke hari ini, hari akhirnya ditambahkan hingga hari ini, dan seterusnya, sampai hari mulai dan akhir hari kelima minggu dihitung.
Kode spesifiknya adalah sebagai berikut:
// Metode ini memiliki dua parameter. Tanggal adalah parameter tanggal yang diberikan, dan hari -hari adalah jumlah hari yang perlu ditambahkan atau dikurangi pada tanggal itu. // Misalnya, add (2010-10-01, -3) Mengembalikan tanggal 3 hari ke depan dari 2010-10-01, yaitu, 2010-09-28 Function AddDate (tanggal, hari) {var d = Tanggal baru (tanggal); d.setDate (d.getDate ()+hari); var m = d.getMonth ()+1; var tmpDate = d.getlyear () + "/" + m + "/" + d.getDate (); var resultDate = tanggal baru (tmpDate); return resultDate; } // Konversi tahun dan bulan yang dipilih menjadi fungsi yyyy-mm-dd mengubah format (datein) {var tahun = 0; var bulan = 0; var day = 0; var currentDate = ""; tahun = datein.getYear (); bulan = dateIn.getmonth () + 1; Day = dateIn.getDate (); CurrentDate = Year + "-"; if (bulan> 10) {currentDate = currentDate + bulan + "-"; } else {currentDate = currentDate + "0" + bulan + "-"; } if (day> 10) {currentDate = currentDate + day; } else {currentDate = currentDate + "0" + day; } return CurrentDate; } // Hitung tanggal mulai dan akhir minggu sesuai dengan fungsi minggu yang dipilih WeekTodate (Weeknumber, Strweekday, Datein) {// Tanggal mulai dari output var outputDate_1 = ""; // tanggal akhir output var outputDate_2 = ""; var tmp_date = ""; // Jika hari yang dipilih pada tanggal 1 tahun kebetulan adalah hari Minggu, tanggal Senin minggu ini adalah tanggal hari-6 if (strweekday == '0') {outputDate_1 = addDate (datein, -6); } // Jika hari pertama tahun dan bulan yang dipilih adalah hari Senin, parameter kedua diatur ke 0, dan seterusnya. if (strweekday == '1') {outputDate_1 = addDate (datein, 0); } if (strweekday == '2') {outputDate_1 = addDate (dateIn, -1); } if (strweekday == '3') {outputDate_1 = addDate (dateIn, -2); } if (strweekday == '4') {outputDate_1 = addDate (dateIn, -3); } if (strweekday == '5') {outputDate_1 = addDate (dateIn, -3); } if (strweekday == '5') {outputDate_1 = addDate (dateIn, -4); } if (strweekday == '6') {outputDate_1 = addDate (dateIn, -5); } if (weeknumber == '1') {outputDate_2 = datein; } if (weeknumber == '2') {outputDate_2 = addDate (outputDate_1,+7); } if (weeknumber == '3') {outputDate_2 = addDate (outputDate_1,+14); } if (weeknumber == '4') {outputDate_2 = addDate (outputDate_1,+21); } if (weeknumber == '5') {outputDate_2 = addDate (outputDate_1,+28); } if (WeekNumber == '1') {// titik basis perhitungan dari hari mulai minggu pertama dan hari akhir adalah outputDate_1, jadi document.getElementById ("spndate"). value = outpeFeFormat (outputDate_1); temp_date = addDate (outputDate_1,+6); document.geteLementById ("finishtime"). value = ganticateFormat (temp_date); } else {// Hari Mulai dan Akhir setelah Minggu 2 dihitung menggunakan outputDate_2 sebagai dokumen titik dasar.getElementById ("spndate"). value = gantionateFormat (outputDate_2); temp_date = addDate (outputDate_2,+6); document.geteLementById ("finishtime"). value = ganticateFormat (temp_date); }} function getFromTodateOfselectedWeek () {var year = document.geteLementById ("sltyear"); var optionyear = year.getElementsByTagname ("option"); var stryear = ""; untuk (var i = 0; i <optionyear.length; ++ i) {if (optionyear [i] .dilected) {stryear = optionyear [i] .text; }} var bulan = document.getElementById ("sltmonth"); var option = month.geteLementsByTagname ("opsi"); var strmonth = ""; untuk (var i = 0; i <option.length; ++ i) {if (option [i] .pelected) {strmonth = opsi [i] .text; }} // Menurut tahun dan bulan yang dipilih, string tanggal digabungkan menjadi yyyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strm + "/" + "1"; // Konversi string tanggal ke tanggal Type var sltdate_tmp_1 = Tanggal baru (sltdate_tmp_0); // Dapatkan jumlah minggu pada tanggal 1 bulan ini var hari kerja = sltdate_tmp_1.getday (); // Dapatkan jumlah minggu yang dipilih oleh halaman var weeknumber = document.getElementById ("WeekNumber"); var optionWeek = WeekNumber.getElementsByTagname ("opsi"); var strweek = ""; var tmp_date = ""; var outputDate_1 = ""; var outputDate_2 = ""; untuk (var i = 0; i <optionweek.length; ++ i) {if (optionWeek [i] .dilected) {strWeek = optionWeek [i] .text; }} // Saat memilih minggu 1, hitung hari dalam tahun dan bulan 1 sebagai berbagai kemungkinan, kembalikan tanggal minggu ke hari Minggu, dan kembalikan tanggal minggu ke hari Minggu // penilaian berikut dan sebagainya if (strweek == '1') {if (weekday == '0') {weektodate (strweek, '0', 0 ', weekday ==' 0 ') {weektodate (Strweek,' 0 ', 0' } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '3', sltdate_tmp_1); } if (Weekday == '4') {weektodate (strweek, '4', sltdate_tmp_1); } if (Weekday == '5') {WeekTodate (Strweek, '5', sltdate_tmp_1); } if (Weekday == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strWeek == '2') {if (weekday == '0') {weektodate (strweek, '0', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '3', sltdate_tmp_1); } if (Weekday == '4') {weektodate (strweek, '4', sltdate_tmp_1); } if (Weekday == '5') {WeekTodate (Strweek, '5', sltdate_tmp_1); } if (Weekday == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strWeek == '3') {if (Weekday == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '3', sltdate_tmp_1); } if (Weekday == '4') {weektodate (strweek, '4', sltdate_tmp_1); } if (Weekday == '5') {WeekTodate (Strweek, '5', sltdate_tmp_1); } if (Weekday == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strWeek == '4') {if (Weekday == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '3', sltdate_tmp_1); } if (Weekday == '4') {weektodate (strweek, '4', sltdate_tmp_1); } if (Weekday == '5') {WeekTodate (Strweek, '5', sltdate_tmp_1); } if (Weekday == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strWeek == '5') {if (Weekday == '0') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strWeek == '5') {if (Weekday == '0') {WeekTodate (StrWeek, '0', sltdate_tmp_1); } if (Weekday == '1') {WeekTodate (Strweek, '1', sltdate_tmp_1); } if (Weekday == '2') {weektodate (strweek, '2', sltdate_tmp_1); } if (Weekday == '3') {WeekTodate (Strweek, '3', sltdate_tmp_1); } if (Weekday == '4') {weektodate (strweek, '4', sltdate_tmp_1); } if (Weekday == '5') {WeekTodate (Strweek, '5', sltdate_tmp_1); } if (Weekday == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }}}Setelah pengujian, ada bug. Ketika 1 Februari adalah hari Senin dan tahun yang dipilih adalah tahun rata -rata, minggu kelima Februari dipilih. Pada saat ini, tanggal mulai minggu 5 sudah berbaris, bukan Februari. Misalnya, pilih minggu ke-5 Februari 2010 saat ini, program ini akan menampilkan 2010-03-1 hingga 2010-03-07.
Ada dua solusi. Salah satunya adalah memaksa kotak drop-down bulan ke Maret ketika pengguna memilih minggu ke-5. Kedua, memaksa kotak drop-down mingguan ke minggu 4, dan menampilkan 2010-02-22 hingga 2010-02-28.
Setelah pengujian, ada bug. Ketika 1 Februari adalah hari Senin dan tahun yang dipilih adalah tahun rata -rata, minggu kelima Februari dipilih. Pada saat ini, tanggal mulai minggu 5 sudah berbaris, bukan Februari.
Misalnya, pilih minggu ke-5 Februari 2010 saat ini, program ini akan menampilkan 2010-03-1 hingga 2010-03-07.
Ada dua solusi. Salah satunya adalah memaksa kotak drop-down bulan ke Maret ketika pengguna memilih minggu ke-5. Kedua, memaksa kotak drop-down mingguan ke minggu 4, dan menampilkan 2010-02-22 hingga 2010-02-28.
Setelah pengujian, ada bug. Ketika 1 Februari adalah hari Senin dan tahun yang dipilih adalah tahun rata -rata, minggu kelima Februari dipilih. Pada saat ini, tanggal mulai minggu 5 sudah berbaris, bukan Februari.
Misalnya, pilih minggu ke-5 Februari 2010 saat ini, program ini akan menampilkan 2010-03-1 hingga 2010-03-07.
Ada dua solusi. Salah satunya adalah memaksa kotak drop-down bulan ke Maret ketika pengguna memilih minggu ke-5. Kedua, memaksa kotak drop-down mingguan ke minggu 4, dan menampilkan 2010-02-22 hingga 2010-02-28.
Di atas adalah kode implementasi berdasarkan implementasi berbasis JavaScript berdasarkan JavaScript dengan memilih jumlah minggu untuk menampilkan hari -hari awal dan akhir. Saya harap ini akan membantu semua orang!