เมื่อเร็ว ๆ นี้ฉันพบหน้าการสืบค้นในโครงการซึ่งเงื่อนไขการสืบค้นคือการแสดงจำนวนวันต่อวันที่เลือกตามจำนวนปีเดือนและสัปดาห์ที่เลือก ฉันค้นหาออนไลน์และพบว่ามีสิ่งที่คล้ายกัน แต่ไม่เหมือนกันอย่างแน่นอนดังนั้นฉันต้องทำด้วยตัวเอง แนวคิดคือการได้รับวันแรกของสัปดาห์ในวันที่ 1 ของปีและเดือนของปีจากนั้นคำนวณวันจันทร์ของสัปดาห์
การเพิ่มสิ่งนี้เป็นจุดพื้นฐานวันสิ้นสุดของสัปดาห์แรกจะถูกเพิ่มจนถึงวันนี้วันเริ่มต้นของสัปดาห์ที่สองจะถูกเพิ่มเข้ามาจนถึงวันนี้วันสุดท้ายจะถูกเพิ่มจนถึงวันนี้
รหัสเฉพาะมีดังนี้:
// วิธีนี้มีพารามิเตอร์สองตัว วันที่เป็นพารามิเตอร์วันที่ที่กำหนดและวันคือจำนวนวันที่จำเป็นต้องเพิ่มหรือลบออกในวันนั้น // ตัวอย่างเช่นเพิ่ม (2010-10-01, -3) ส่งคืนวันที่ 3 วันข้างหน้าจาก 2010-10-01 นั่นคือ, 2010-09-28 ฟังก์ชั่น adddate (วันที่, วัน) {var d = วันที่ใหม่ (วันที่); d.setDate (d.getdate ()+วัน); var m = d.getMonth ()+1; var tmpdate = d.getFulelear () + "/" + m + "/" + d.getDate (); var resultdate = วันที่ใหม่ (tmpdate); คืนผลลัพธ์; } // แปลงปีและเดือนที่เลือกเป็นฟังก์ชั่น yyyy-mm-dd เปลี่ยนไป (datein) {var year = 0; var month = 0; var day = 0; var currentDate = ""; ปี = datein.geteyear (); เดือน = datein.getMonth () + 1; day = datein.getDate (); currentDate = ปี + "-"; ถ้า (เดือน> 10) {currentDate = currentDate + เดือน + "-"; } else {currentDate = currentDate + "0" + เดือน + "-"; } ถ้า (วัน> 10) {currentDate = CurrentDate + วัน; } else {currentDate = currentDate + "0" + วัน; } return currentDate; } // คำนวณวันที่เริ่มต้นและสิ้นสุดของสัปดาห์ตามฟังก์ชั่นสัปดาห์ที่เลือก WeekTodate (WeekNumber, Strweekday, Datein) {// วันที่เริ่มต้นของเอาต์พุต var outputDate_1 = ""; // วันที่สิ้นสุดของเอาต์พุต var outputDate_2 = ""; var tmp_date = ""; // ถ้าวันที่เลือกในวันที่ 1 ของปีเกิดขึ้นเป็นวันอาทิตย์วันจันทร์ของสัปดาห์คือวันที่ของวัน -6 ถ้า (strweekday == '0') {outputDate_1 = addDate (Datein, -6); } // ถ้าวันที่ 1 ของปีและเดือนที่เลือกคือวันจันทร์พารามิเตอร์ที่สองจะถูกตั้งค่าเป็น 0 และอื่น ๆ 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') {// จุดฐานการคำนวณของวันเริ่มต้นและวันสิ้นสัปดาห์แรกคือ outputDate_1 ดังนั้น document.getElementById ("spndate") ค่า = เปลี่ยนรูปแบบ (outputDate_1); temp_date = addDate (outputDate_1,+6); document.getElementById ("finishtime"). value = condanceFormat (temp_date); } else {// วันเริ่มต้นและสิ้นสุดหลังจากสัปดาห์ที่ 2 คำนวณโดยใช้ outputDate_2 เป็น document จุดพื้นฐาน getElementById ("spndate") ค่า = เปลี่ยนรูปแบบ (outputDate_2); temp_date = addDate (outputDate_2,+6); document.getElementById ("finishtime"). value = condanceFormat (temp_date); }} ฟังก์ชั่น getFromTodateOfSelectedWeek () {var year = document.getElementById ("sltyear"); VAR OptionYear = year.getElementsByTagname ("ตัวเลือก"); var stryear = ""; สำหรับ (var i = 0; i <opotinyear.length; ++ i) {if (aptopyyear [i] .Selected) {stryear = OptionYear [i] .Text; }} var month = document.getElementById ("sltmonth"); ตัวเลือก var = month.getElementsByTagname ("ตัวเลือก"); var stronth = ""; สำหรับ (var i = 0; i <option.length; ++ i) {if (ตัวเลือก [i] .Selected) {strOnth = ตัวเลือก [i] .Text; }} // ตามปีและเดือนที่เลือกสตริงวันที่รวมกันเป็น yyyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" + "1"; // แปลงสตริงวันที่เป็นวันที่ประเภท var sltdate_tmp_1 = วันที่ใหม่ (sltdate_tmp_0); // รับจำนวนสัปดาห์ในวันที่ 1 ของเดือน var วันธรรมดา = sltdate_tmp_1.getday (); // รับจำนวนสัปดาห์ที่เลือกโดยหน้า var WeekNumber = document.getElementById ("WeekNumber"); VAR OPTIONWEEK = WEEKNUMBER.GETELEMENTSBYTAGNAME ("ตัวเลือก"); var strweek = ""; var tmp_date = ""; var outputDate_1 = ""; var outputDate_2 = ""; สำหรับ (var i = 0; i <optionweek.length; ++ i) {if (optipleweek [i] .Selected) {strweek = optupteweek [i] .Text; }} // เมื่อเลือกสัปดาห์ที่ 1 ให้คำนวณวันของปีและเดือนที่ 1 เป็นไปได้ที่หลากหลายให้กลับวันที่สัปดาห์ถึงวันอาทิตย์และกลับวันที่ของสัปดาห์ถึงวันอาทิตย์ // การตัดสินต่อไปนี้และอื่น ๆ ถ้า (strweek == '1') {ถ้า (วันธรรมดา == '0') } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '3', sltdate_tmp_1); } if (วันธรรมดา == '4') {WeekTodate (strweek, '4', sltdate_tmp_1); } if (วันธรรมดา == '5') {WeekTodate (strweek, '5', sltdate_tmp_1); } if (วันธรรมดา == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strweek == '2') {ถ้า (วันธรรมดา == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '3', sltdate_tmp_1); } if (วันธรรมดา == '4') {WeekTodate (strweek, '4', sltdate_tmp_1); } if (วันธรรมดา == '5') {WeekTodate (strweek, '5', sltdate_tmp_1); } if (วันธรรมดา == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strweek == '3') {ถ้า (วันธรรมดา == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '3', sltdate_tmp_1); } if (วันธรรมดา == '4') {WeekTodate (strweek, '4', sltdate_tmp_1); } if (วันธรรมดา == '5') {WeekTodate (strweek, '5', sltdate_tmp_1); } if (วันธรรมดา == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strweek == '4') {ถ้า (วันธรรมดา == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '3', sltdate_tmp_1); } if (วันธรรมดา == '4') {WeekTodate (strweek, '4', sltdate_tmp_1); } if (วันธรรมดา == '5') {WeekTodate (strweek, '5', sltdate_tmp_1); } if (วันธรรมดา == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); }} if (strweek == '5') {ถ้า (วันธรรมดา == '0') {WeekTodate (strweek, '6', sltdate_tmp_1); }} if (strweek == '5') {ถ้า (วันธรรมดา == '0') {WeekTodate (strweek, '0', sltdate_tmp_1); } if (วันธรรมดา == '1') {WeekTodate (strweek, '1', sltdate_tmp_1); } if (วันธรรมดา == '2') {WeekTodate (strweek, '2', sltdate_tmp_1); } if (วันธรรมดา == '3') {WeekTodate (strweek, '3', sltdate_tmp_1); } if (วันธรรมดา == '4') {WeekTodate (strweek, '4', sltdate_tmp_1); } if (วันธรรมดา == '5') {WeekTodate (strweek, '5', sltdate_tmp_1); } if (วันธรรมดา == '6') {WeekTodate (Strweek, '6', sltdate_tmp_1); -หลังจากการทดสอบมีข้อผิดพลาด เมื่อวันที่ 1 กุมภาพันธ์เป็นวันจันทร์และปีที่เลือกคือปีเฉลี่ยสัปดาห์ที่ห้าของเดือนกุมภาพันธ์จะถูกเลือก ในเวลานี้วันที่เริ่มต้นของสัปดาห์ที่ 5 มีนาคมแล้วแทนที่จะเป็นเดือนกุมภาพันธ์ ตัวอย่างเช่นเลือกสัปดาห์ที่ 5 ของเดือนกุมภาพันธ์ 2010 ในเวลานี้โปรแกรมจะแสดง 2010-03-1 ถึง 2010-03-07
มีสองวิธี หนึ่งคือการบังคับให้กล่องดรอปดาวน์เดือนถึงเดือนมีนาคมเมื่อผู้ใช้เลือกสัปดาห์ที่ 5 วินาทีบังคับให้กล่องดรอปดาวน์รายสัปดาห์เป็นสัปดาห์ที่ 4 และแสดง 2010-02-22 ถึง 2010-02-28
หลังจากการทดสอบมีข้อผิดพลาด เมื่อวันที่ 1 กุมภาพันธ์เป็นวันจันทร์และปีที่เลือกคือปีเฉลี่ยสัปดาห์ที่ห้าของเดือนกุมภาพันธ์จะถูกเลือก ในเวลานี้วันที่เริ่มต้นของสัปดาห์ที่ 5 มีนาคมแล้วแทนที่จะเป็นเดือนกุมภาพันธ์
ตัวอย่างเช่นเลือกสัปดาห์ที่ 5 ของเดือนกุมภาพันธ์ 2010 ในเวลานี้โปรแกรมจะแสดง 2010-03-1 ถึง 2010-03-07
มีสองวิธี หนึ่งคือการบังคับให้กล่องดรอปดาวน์เดือนถึงเดือนมีนาคมเมื่อผู้ใช้เลือกสัปดาห์ที่ 5 วินาทีบังคับให้กล่องดรอปดาวน์รายสัปดาห์เป็นสัปดาห์ที่ 4 และแสดง 2010-02-22 ถึง 2010-02-28
หลังจากการทดสอบมีข้อผิดพลาด เมื่อวันที่ 1 กุมภาพันธ์เป็นวันจันทร์และปีที่เลือกคือปีเฉลี่ยสัปดาห์ที่ห้าของเดือนกุมภาพันธ์จะถูกเลือก ในเวลานี้วันที่เริ่มต้นของสัปดาห์ที่ 5 มีนาคมแล้วแทนที่จะเป็นเดือนกุมภาพันธ์
ตัวอย่างเช่นเลือกสัปดาห์ที่ 5 ของเดือนกุมภาพันธ์ 2010 ในเวลานี้โปรแกรมจะแสดง 2010-03-1 ถึง 2010-03-07
มีสองวิธี หนึ่งคือการบังคับให้กล่องดรอปดาวน์เดือนถึงเดือนมีนาคมเมื่อผู้ใช้เลือกสัปดาห์ที่ 5 วินาทีบังคับให้กล่องดรอปดาวน์รายสัปดาห์เป็นสัปดาห์ที่ 4 และแสดง 2010-02-22 ถึง 2010-02-28
ข้างต้นคือรหัสการใช้งานตามการใช้งานตาม JavaScript ตาม JavaScript โดยเลือกจำนวนสัปดาห์เพื่อแสดงวันเริ่มต้นและสิ้นสุด ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน!