لقد واجهت مؤخرًا صفحة استعلام في مشروع ، حيث تتمثل حالة الاستعلام في عرض عدد محدد من الأيام إلى أيام الأسبوع بناءً على رقم السنة والشهر والأسبوع المحدد. لقد بحثت عبر الإنترنت ووجدت أن هناك منها مماثلة ولكن ليس بالضبط نفس تلك ، لذلك كان علي أن أفعل ذلك بنفسي. والفكرة هي الحصول أولاً على يوم الأسبوع في الأول من العام وشهر العام ، ثم حساب تاريخ الاثنين من الأسبوع.
مع أخذ هذا كنقطة أساس ، تتم إضافة يوم نهاية الأسبوع الأول إلى هذا اليوم ، ويتم إضافة يوم بداية الأسبوع الثاني إلى هذا اليوم ، ويتم إضافة يوم النهاية إلى هذا اليوم ، ويتم إضافة يوم النهاية إلى هذا اليوم ، وهكذا ، حتى يوم البدء ويوم نهاية الأسبوع الخامس.
الرمز المحدد كما يلي:
// هذه الطريقة لها معلمتان. التاريخ هو معلمة التاريخ المحددة ، والأيام هي عدد الأيام التي يجب إضافتها أو طرحها في ذلك التاريخ. // على سبيل المثال ، إضافة (2010-10-01 ، -3) يعيد تاريخ 3 أيام إلى الأمام من 2010-10-01 ، أي ، 2010-09-28 الوظيفة الإضافية (التاريخ ، الأيام) {var d = date (date) ؛ D.SetDate (D.GetDate ()+Days) ؛ var m = d.getMonth ()+1 ؛ var tmpdate = d.getlyear () + "/" + m + "/" + d.getDate () ؛ var resultDate = تاريخ جديد (tmpdate) ؛ Return Resultdate ؛ } // تحويل العام والشهر المحدد إلى وظيفة yyyy-mm-dd dechiftFormat (datein) {var year = 0 ؛ var month = 0 ؛ var day = 0 ؛ var currentDate = "" ؛ السنة = DateIn.getyear () ؛ الشهر = DateIn.getMonth () + 1 ؛ اليوم = dateIn.getDate () ؛ CurrentDate = Year + "-" ؛ if (month> 10) {currentDate = currentDate + month + "-" ؛ } آخر {currentDate = currentDate + "0" + month + "-" ؛ } if (day> 10) {currentDate = currentDate + day ؛ } آخر {currentDate = currentDate + "0" + day ؛ } إرجاع CurrentDate ؛ }. // تاريخ نهاية الإخراج var outputdate_2 = "" ؛ var tmp_date = "" ؛ // إذا كان اليوم المحدد في الأول من العام هو يوم الأحد ، فإن تاريخ يوم الاثنين هو تاريخ اليوم-6 إذا (strweekday == '0') {outputDate_1 = addDate (datein ، -6) ؛ } // إذا كان يوم الأول من العام والشهر المحدد هو الاثنين ، فسيتم تعيين المعلمة الثانية على 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 ، وبالتالي فإن المستند. temp_date = addDate (outputDate_1 ،+6) ؛ document.getElementById ("FinishTime"). value = changeateFormat (temp_date) ؛ } آخر {// يتم حساب أيام البدء والنهاية بعد الأسبوع 2 باستخدام outputDate_2 كمستند point الأساسي. temp_date = addDate (outputDate_2 ،+6) ؛ document.getElementById ("FinishTime"). value = changeateFormat (temp_date) ؛ }} وظيفة getFromTodateOfSelectedWeek () {var year = document.getElementById ("sltyear") ؛ var OptionYear = year.getElementSbyTagName ("Option") ؛ var stryear = "" ؛ لـ (var i = 0 ؛ i <orteryear.length ؛ ++ i) {if (OptionYear [i] .selected) {stryear = OptionYear [i] .text ؛ }} var month = document.getElementById ("sltmonth") ؛ VAR OPTION = month.getElementsByTagName ("Option") ؛ var strmonth = "" ؛ لـ (var i = 0 ؛ i <option.length ؛ ++ i) {if (Option [i] .selected) {strmonth = Option [i] .text ؛ }} // وفقًا للسنة والشهر المحددة ، تم دمج سلسلة التاريخ في Yyyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" + "1" ؛ // تحويل سلسلة التاريخ حتى الآن نوع var sltdate_tmp_1 = تاريخ جديد (sltdate_tmp_0) ؛ // احصل على عدد الأسابيع في الأول من الشهر var weekday = 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 <ortingweek.length ؛ ++ i) {if (OptionWeek [i] .selected) {strweek = OptionWeek [i] .text ؛ }} // عند اختيار الأسبوع 1 ، وحساب يوم السنة والشهر 1 كاحتمالات مختلفة ، وإعادة تاريخ الأسبوع إلى الأحد ، وإرجاع تاريخ الأسبوع إلى الأحد // الحكم التالي وما إلى ذلك على إذا (strweek == '1') {if (dayday == '0') {meektodate (strweek ، '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) ؛ }}}بعد الاختبار ، هناك خطأ. عندما يكون 1 فبراير هو الاثنين والعام المحدد هو متوسط العام ، يتم اختيار الأسبوع الخامس من فبراير. في هذا الوقت ، يكون تاريخ بدء الأسبوع 5 مارس بالفعل بدلاً من فبراير. على سبيل المثال ، حدد الأسبوع الخامس من فبراير 2010 في هذا الوقت ، وسيعرض البرنامج 2010-03-1 إلى 2010-03-07.
هناك حلان. أحدهما هو إجبار المربع المنسدلة على الشهر إلى مارس عندما يختار المستخدم الأسبوع 5. ثانياً ، فرض مربع المنسدلة الأسبوعية إلى الأسبوع 4 ، وعرضه 2010-02-22 إلى 2010-02-28.
بعد الاختبار ، هناك خطأ. عندما يكون 1 فبراير هو الاثنين والعام المحدد هو متوسط العام ، يتم اختيار الأسبوع الخامس من فبراير. في هذا الوقت ، يكون تاريخ بدء الأسبوع 5 مارس بالفعل بدلاً من فبراير.
على سبيل المثال ، حدد الأسبوع الخامس من فبراير 2010 في هذا الوقت ، وسيعرض البرنامج 2010-03-1 إلى 2010-03-07.
هناك حلان. أحدهما هو إجبار المربع المنسدلة على الشهر إلى مارس عندما يختار المستخدم الأسبوع 5. ثانياً ، فرض مربع المنسدلة الأسبوعية إلى الأسبوع 4 ، وعرضه 2010-02-22 إلى 2010-02-28.
بعد الاختبار ، هناك خطأ. عندما يكون 1 فبراير هو الاثنين والعام المحدد هو متوسط العام ، يتم اختيار الأسبوع الخامس من فبراير. في هذا الوقت ، يكون تاريخ بدء الأسبوع 5 مارس بالفعل بدلاً من فبراير.
على سبيل المثال ، حدد الأسبوع الخامس من فبراير 2010 في هذا الوقت ، وسيعرض البرنامج 2010-03-1 إلى 2010-03-07.
هناك حلان. أحدهما هو إجبار المربع المنسدلة على الشهر إلى مارس عندما يختار المستخدم الأسبوع 5. ثانياً ، فرض مربع المنسدلة الأسبوعية إلى الأسبوع 4 ، وعرضه 2010-02-22 إلى 2010-02-28.
ما سبق هو رمز التنفيذ القائم على التنفيذ المستند إلى JavaScript استنادًا إلى JavaScript عن طريق تحديد عدد الأسابيع لعرض أيام البدء والنهاية. آمل أن يكون ذلك مفيدًا للجميع!