Récemment, j'ai rencontré une page de requête dans un projet, où une condition de requête consiste à afficher le nombre sélectionné de jours à des jours de la semaine en fonction du numéro, mois et semaine sélectionné. J'ai cherché en ligne et j'ai découvert qu'il y en avait des similaires mais pas exactement les mêmes, donc j'ai dû le faire moi-même. L'idée est d'obtenir d'abord le jour de la semaine le 1er et le mois de l'année, puis de calculer la date du lundi de la semaine.
En prenant cela comme point de base, le jour de fin de la première semaine est ajouté à ce jour, le jour de début de la deuxième semaine est ajouté à ce jour, le jour de fin est ajouté à ce jour, le jour de fin est ajouté à ce jour, et ainsi de suite, jusqu'au jour et au jour de la fin de la cinquième semaine.
Le code spécifique est le suivant:
// Cette méthode a deux paramètres. La date est le paramètre de date donné, et les jours sont le nombre de jours qui doivent être ajoutés ou soustraits à cette date. // Par exemple, ADD (2010-10-01, -3) renvoie la date de 3 jours à l'avenir de 2010-10-01, c'est-à-dire, 2010-09-28 Fonction Adddate (date, jours) {var d = new Date (date); d.setDate (d.getDate () + jours); var m = d.getMonth () + 1; var tmpdate = d.getlyar () + "/" + m + "/" + d.getDate (); var resultDate = new Date (tmpDate); return resultDate; } // Convertir l'année et le mois sélectionnés en fonction yyyy-mm-dd changé laformat (dateIn) {var année = 0; var mois = 0; var day = 0; var currentDate = ""; année = datein.getyear (); mois = datein.getMonth () + 1; Day = datein.getDate (); currentDate = an + "-"; if (mois> 10) {currentDate = currentDate + mois + "-"; } else {currentDate = currentDate + "0" + mois + "-"; } if (day> 10) {currentDate = currentDate + day; } else {currentDate = currentDate + "0" + jour; } return currentDate; } // Calculez la date de début et de fin de la semaine en fonction de la semaine sélectionnée WeekTodate (WeekNumber, strweekday, datein) {// la date de début de la sortie var outputDate_1 = ""; // la date de fin de la sortie var outputDate_2 = ""; var tmp_date = ""; // Si la journée sélectionnée le 1er de l'année se trouve dimanche, la date du lundi de la semaine est la date du jour-6 if (strweekday == '0') {outputDate_1 = adddate (datein, -6); } // Si le jour du 1er de l'année et du mois sélectionné est lundi, le deuxième paramètre est défini à 0, etc. 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') {// Les points de base de calcul du jour de départ et de fin de la première semaine sont OutputDate_1, de sorte que le document.getElementById ("spnDate"). Value = SHOGHDATATEFORMAT (outputDate_1); temp_date = addDate (outputDate_1, + 6); document.getElementById ("Finishtime"). Value = SHOGODATEFORMAT (temp_date); } else {// Le début et la fin des jours après la semaine 2 sont calculés à l'aide de outputDate_2 comme document de point de base.getElementById ("spnDate"). Value = SHOGODATEFORMAT (outputDate_2); temp_date = addDate (outputDate_2, + 6); document.getElementById ("Finishtime"). Value = SHOGODATEFORMAT (temp_date); }} fonction getFromTodateOfSelectedWeek () {var année = document.getElementById ("SltyEar"); var optionyear = an.getElementsByTagName ("option"); var stryear = ""; pour (var i = 0; i <optionyear.length; ++ i) {if (optionyear [i] .selected) {stryear = optionyear [i] .text; }} var mois = document.getElementById ("SltMonth"); var option = Month.getElementsByTagName ("Option"); var strmonth = ""; for (var i = 0; i <option.length; ++ i) {if (option [i] .selected) {strmonth = option [i] .text; }} // Selon l'année et le mois sélectionnés, la chaîne de date combinée en yyyy / mm / 01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" + "1"; // Convertissez la chaîne de date à Date Type var sltdate_tmp_1 = new Date (sltdate_tmp_0); // Obtenez le nombre de semaines sur le 1er du mois var en semaine = sltdate_tmp_1.getDay (); // Obtenez le nombre de semaines sélectionnées par la page var WeekNumber = document.getElementById ("WeekNumber"); var optionweek = weekNumber.getElementsByTagName ("option"); var strweek = ""; var tmp_date = ""; var outputDate_1 = ""; var outputDate_2 = ""; for (var i = 0; i <optionweek.length; ++ i) {if (optionweek [i] .selected) {strweek = optionweek [i] .text; }} // Lors de la sélection de la semaine 1, calculez le jour de l'année et le mois 1 en tant que diverses possibilités, renvoyez la date de la semaine à dimanche et renvoyez la date de la semaine à dimanche // le jugement suivant et ainsi de suite if (strweek == '1') {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 == '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); }}}Après les tests, il y a un bogue. Le 1er février est lundi et l'année sélectionnée est l'année moyenne, la cinquième semaine de février est sélectionnée. À l'heure actuelle, la date de début de la semaine 5 est déjà mars au lieu de février. Par exemple, sélectionnez la 5e semaine de février 2010 pour le moment, le programme affichera 2010-03-1 à 2010-03-07.
Il existe deux solutions. L'une consiste à forcer la boîte déroulante du mois à mars lorsque l'utilisateur sélectionne la semaine 5. Deuxièmement, forcer la boîte déroulante hebdomadaire à la semaine 4 et afficher 2010-02-22 à 2010-02-28.
Après les tests, il y a un bogue. Le 1er février est lundi et l'année sélectionnée est l'année moyenne, la cinquième semaine de février est sélectionnée. À l'heure actuelle, la date de début de la semaine 5 est déjà mars au lieu de février.
Par exemple, sélectionnez la 5e semaine de février 2010 pour le moment, le programme affichera 2010-03-1 à 2010-03-07.
Il existe deux solutions. L'une consiste à forcer la boîte déroulante du mois à mars lorsque l'utilisateur sélectionne la semaine 5. Deuxièmement, forcer la boîte déroulante hebdomadaire à la semaine 4 et afficher 2010-02-22 à 2010-02-28.
Après les tests, il y a un bogue. Le 1er février est lundi et l'année sélectionnée est l'année moyenne, la cinquième semaine de février est sélectionnée. À l'heure actuelle, la date de début de la semaine 5 est déjà mars au lieu de février.
Par exemple, sélectionnez la 5e semaine de février 2010 pour le moment, le programme affichera 2010-03-1 à 2010-03-07.
Il existe deux solutions. L'une consiste à forcer la boîte déroulante du mois à mars lorsque l'utilisateur sélectionne la semaine 5. Deuxièmement, forcer la boîte déroulante hebdomadaire à la semaine 4 et afficher 2010-02-22 à 2010-02-28.
Ce qui précède est le code d'implémentation basé sur l'implémentation basée sur JavaScript basée sur JavaScript en sélectionnant le nombre de semaines pour afficher les jours de début et de fin. J'espère que ce sera utile à tous!