Kürzlich habe ich in einem Projekt auf eine Abfrageseite gestoßen, bei der eine Abfragebedingung die ausgewählte Anzahl der Tage bis Tage der Woche anhand der ausgewählten Jahres-, Monat- und Wochennummer angezeigt hat. Ich suchte online und stellte fest, dass es ähnliche, aber nicht genau die gleichen gab, also musste ich es selbst tun. Die Idee ist, zuerst den Wochentag am 1. Jahr und Monat des Jahres zu erhalten und dann das Datum des Montags der Woche zu berechnen.
Wenn Sie dies als Basispunkt betrachten, wird der Endtag der ersten Woche bis heute hinzugefügt, der Beginn der zweiten Woche wird bis heute hinzugefügt. Der Endtag wird bis heute hinzugefügt, der Endtag wird bis zum heutigen Tag hinzugefügt, bis zum Starttag und am Endtag der fünften Woche berechnet wird.
Der spezifische Code lautet wie folgt:
// Diese Methode hat zwei Parameter. Datum ist der angegebene Datumsparameter, und Tage sind die Anzahl der Tage, die an diesem Datum hinzugefügt oder abgezogen werden müssen. // Zum Beispiel add (2010-10-01, -3) das Datum von 3 Tagen von 2010-10-01, dh, 2010-09-28 Funktion AddDate (Datum, Tage) {var d = neues Datum (Datum); D.SetDate (D.GetDate ()+Tage); var m = d.getMonth ()+1; var tmpdate = d.sGetinglyear () + "/" + m + "/" + d.getDate (); var resultdate = neues Datum (TMPDate); Rückgabeergebnis; } // Die ausgewählte Jahr und Monat in die Jyjyy-MM-DD-Funktion geändert (DateIn) {var Jahr = 0; var Monat = 0; var tag = 0; var CurrentDate = ""; Jahr = DateIn.Getyear (); Monat = DateIn.getMonth () + 1; Day = DateIn.getDate (); CurrentDate = Jahr + "-"; if (Monat> 10) {currentDate = currentDate + Monat + "-"; } else {currentDate = currentDate + "0" + Monat + "-"; } if (tag> 10) {currentDate = currentDate + tag; } else {currentDate = currentDate + "0" + Tag; } Return CurrentDate; } // Berechnen Sie das Start- und Enddatum der Woche gemäß der ausgewählten Woche Function WeekTodat (Weeknumber, Strweekday, DateIn) {// Das Startdatum des Ausgabe var outputdate_1 = ""; // das Enddatum der Ausgabe var outputdate_2 = ""; var tmp_date = ""; // Wenn der am 1. des Jahres ausgewählte Tag am Sonntag ist, ist das Datum der Woche Montag das Datum des Tages 6, wenn (strweekday == '0') {outputDate_1 = AddDate (DateIn, -6); } // Wenn der Tag des ersten Jahres und des Monats Montag ist, wird der zweite Parameter auf 0 gesetzt und so weiter. 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') {// Die Berechnungsbasispunkte des Starttags und des Endtages der ersten Woche sind ausgegeben. temp_date = addDate (outputDate_1,+6); document.GetElementById ("FinishTime"). Value = meechleateFormat (temp_date); } else {// Die Start- und Endtage für Woche 2 werden unter Verwendung von OutputDate_2 als Basispunktdokument berechnet. temp_date = addDate (outputDate_2,+6); document.GetElementById ("FinishTime"). Value = meechleateFormat (temp_date); }} Funktion getFromTodateOfSelectedWeek () {var yeor = document.getElementById ("sltyear"); var optionyear = Jahr.GetElementsByTagName ("Option"); var Stryear = ""; für (var i = 0; i <optionyear.length; ++ i) {if (optionyear [i] .Selected) {stryear = optionyear [i] .Text; }} var monat = document.getElementById ("sltmonth"); var option = monat.getElementsByTagName ("Option"); var strmonth = ""; für (var i = 0; i <option.length; ++ i) {if (Option [i] .Selected) {strmonth = Option [i] .Text; }} // Gemäß dem ausgewählten Jahr und Monat kombinierte die Datumszeichenfolge in yyjyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" + "1"; // Die Datumszeichenfolge mit dem Datum konvertieren Var SLTDATE_TMP_1 = NEUES DATUM (SLTDATE_TMP_0); // Erhalten Sie die Anzahl der Wochen am 1. des Monats var wochentag = SLTDATE_TMP_1.getday (); // Erhalten Sie die Anzahl der Wochen, die von der Seite VAR Weeknumber = document.getElementById ("Weeknumber") ausgewählt werden. var optionWeek = weeknumber.getElementsByTagName ("Option"); var strweek = ""; var tmp_date = ""; var outputdate_1 = ""; var outputdate_2 = ""; für (var i = 0; i <optionWeek.length; ++ i) {if (OptionWeek [i] .Selected) {strweek = optionWeek [i] .Text; }} // Berechnen Sie bei der Auswahl der Woche 1 den Tag des Jahres und des Monats 1 als verschiedene Möglichkeiten, geben Sie das Datum der Woche bis Sonntag zurück und geben Sie das Datum der Woche bis Sonntag zurück // das folgende Urteil usw. if (strweek == '1') {if (wochentags == '0') {WeekTodate (strweek, '0', Sltdate_tmp_11). } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '3', SLTDATE_TMP_1); } if (wochentag == '4') {weekTodate (strweek, '4', SLTDATE_TMP_1); } if (wochentag == '5') {weekTodate (strweek, '5', SLTDATE_TMP_1); } if (wochentag == '6') {weekTodate (strweek, '6', SLTDATE_TMP_1); }} if (strweek == '2') {if (wochentag == '0') {weekTodate (strweek, '0', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '3', SLTDATE_TMP_1); } if (wochentag == '4') {weekTodate (strweek, '4', SLTDATE_TMP_1); } if (wochentag == '5') {weekTodate (strweek, '5', SLTDATE_TMP_1); } if (wochentag == '6') {weekTodate (strweek, '6', SLTDATE_TMP_1); }} if (strweek == '3') {if (wochentag == '0') {weekTodate (strweek, '0', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '3', SLTDATE_TMP_1); } if (wochentag == '4') {weekTodate (strweek, '4', SLTDATE_TMP_1); } if (wochentag == '5') {weekTodate (strweek, '5', SLTDATE_TMP_1); } if (wochentag == '6') {weekTodate (strweek, '6', SLTDATE_TMP_1); }} if (strweek == '4') {if (wochentag == '0') {weekTodate (strweek, '0', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '3', SLTDATE_TMP_1); } if (wochentag == '4') {weekTodate (strweek, '4', SLTDATE_TMP_1); } if (wochentag == '5') {weekTodate (strweek, '5', SLTDATE_TMP_1); } if (wochentag == '6') {weekTodate (strweek, '6', SLTDATE_TMP_1); }} if (strweek == '5') {if (wochentag == '0') {weekTodate (strweek, '6', SLTDATE_TMP_1); }} if (strweek == '5') {if (wochentag == '0') {weekTodate (strweek, '0', SLTDATE_TMP_1); } if (wochentag == '1') {weekTodate (strweek, '1', SLTDATE_TMP_1); } if (wochentag == '2') {weekTodate (strweek, '2', sltdate_tmp_1); } if (wochentag == '3') {weekTodate (strweek, '3', SLTDATE_TMP_1); } if (wochentag == '4') {weekTodate (strweek, '4', SLTDATE_TMP_1); } if (wochentag == '5') {weekTodate (strweek, '5', SLTDATE_TMP_1); } if (wochentag == '6') {weekTodate (strweek, '6', SLTDATE_TMP_1); }}}Nach dem Test gibt es einen Fehler. Wenn am 1. Februar Montag ist und das ausgewählte Jahr das durchschnittliche Jahr ist, wird die fünfte Februarwoche ausgewählt. Zu diesem Zeitpunkt ist das Startdatum der 5. Woche bereits März statt Februar. Wählen Sie beispielsweise die 5. Februarwoche 2010 aus. Das Programm wird 2010-03-1 bis 2010-03-07 angezeigt.
Es gibt zwei Lösungen. Eines soll das Dropdown-Box des Monats auf März erzwingen, wenn der Benutzer Woche 5. Zweitens auswählt, das wöchentliche Dropdown-Box in Woche 4 erzwingen und 2010-02-22 bis 2010-02-28 angezeigt werden.
Nach dem Test gibt es einen Fehler. Wenn am 1. Februar Montag ist und das ausgewählte Jahr das durchschnittliche Jahr ist, wird die fünfte Februarwoche ausgewählt. Zu diesem Zeitpunkt ist das Startdatum der 5. Woche bereits März statt Februar.
Wählen Sie beispielsweise die 5. Februarwoche 2010 aus. Das Programm wird 2010-03-1 bis 2010-03-07 angezeigt.
Es gibt zwei Lösungen. Eines soll das Dropdown-Box des Monats auf März erzwingen, wenn der Benutzer Woche 5. Zweitens auswählt, das wöchentliche Dropdown-Box in Woche 4 erzwingen und 2010-02-22 bis 2010-02-28 angezeigt werden.
Nach dem Test gibt es einen Fehler. Wenn am 1. Februar Montag ist und das ausgewählte Jahr das durchschnittliche Jahr ist, wird die fünfte Februarwoche ausgewählt. Zu diesem Zeitpunkt ist das Startdatum der 5. Woche bereits März statt Februar.
Wählen Sie beispielsweise die 5. Februarwoche 2010 aus. Das Programm wird 2010-03-1 bis 2010-03-07 angezeigt.
Es gibt zwei Lösungen. Eines soll das Dropdown-Box des Monats auf März erzwingen, wenn der Benutzer Woche 5. Zweitens auswählt, das wöchentliche Dropdown-Box in Woche 4 erzwingen und 2010-02-22 bis 2010-02-28 angezeigt werden.
Das obige ist der Implementierungscode basierend auf JavaScript -basierter Implementierung basierend auf JavaScript, indem die Anzahl der Wochen für die Anzeige der Start- und Endtage ausgewählt wird. Ich hoffe, es wird für alle hilfreich sein!