Recientemente encontré una página de consulta en un proyecto, donde una condición de consulta es mostrar el número seleccionado de días a los días de la semana en función del número de año, mes y semana seleccionados. Busqué en línea y descubrí que había otros similares pero no exactamente los mismos, así que tuve que hacerlo yo mismo. La idea es obtener primero el día de la semana el 1 del año y el mes del año, y luego calcular la fecha del lunes de la semana.
Tomando esto como punto básico, el final del día de la primera semana se agrega hasta el día de hoy, el día inicial de la segunda semana se agrega hasta el día de hoy, el día final se agrega hasta el día de hoy, el día final se agrega hasta el día de hoy, y así sucesivamente, hasta que se calcule el día de inicio y el día de fin de la quinta semana.
El código específico es el siguiente:
// Este método tiene dos parámetros. La fecha es el parámetro de fecha determinado, y los días son la cantidad de días que deben agregarse o restarse en esa fecha. // Por ejemplo, ADD (2010-10-01, -3) devuelve la fecha de 3 días en el futuro desde 2010-10-01, es decir, función de función 2010-09-28 (fecha, días) {var d = nueva fecha (fecha); d.setDate (d.getDate ()+días); var m = d.getMonth ()+1; var tmpdate = d.getblyear () + "/" + m + "/" + d.getDate (); var resultDate = nueva fecha (tmpdate); devolver el resultado; } // Convierta el año y el mes seleccionados a la función Yyyyy-MM-DD cambiableFormat (dateIn) {var año = 0; var mes = 0; var día = 0; var currentDate = ""; año = dateIn.getYear (); mes = dateIn.getMonth () + 1; Día = dateIn.getDate (); CurrentDate = año + "-"; if (mes> 10) {currentDate = currentDate + mes + "-"; } else {currentDate = currentDate + "0" + mes + "-"; } if (día> 10) {currentDate = currentDate + day; } else {currentDate = currentDate + "0" + día; } return CurrentDate; } // Calcule la fecha de inicio y finalización de la semana de acuerdo con la función de la semana seleccionada WeekTodate (WeekNumber, Strweekday, DateIn) {// La fecha de inicio de la salida var outputDate_1 = ""; // La fecha de finalización de la salida var outputDate_2 = ""; var tmp_date = ""; // Si el día seleccionado el 1 del año es el domingo, la fecha del lunes de la semana es la fecha del día-6 if (strweekday == '0') {outputDate_1 = addDate (dateIn, -6); } // Si el día del 1er del año y el mes seleccionado es el lunes, el segundo parámetro se establece en 0, y así sucesivamente. 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') {// Los puntos base de cálculo del día de inicio y final del día de inicio de la primera semana son salidas date_1, por lo que el document.getElementById ("spndate"). valor = cambiadeformat (outputDate_1); temp_date = addDate (outputDate_1,+6); document.getElementById ("FinalTime"). Value = cambiableFormat (temp_date); } else {// Los días de inicio y finalización después de la semana 2 se calculan utilizando salidas date_2 como el documento del punto base.getElementById ("SpnDate"). Value = cambiadeFormat (outputDate_2); temp_date = addDate (outputDate_2,+6); document.getElementById ("FinalTime"). Value = cambiableFormat (temp_date); }} función getFromTodateOfSelectedWeek () {var año = document.getElementById ("sltyear"); var opcionyear = año.getElementsBytagName ("opción"); var stryear = ""; for (var i = 0; i <Oppectionyear.length; ++ i) {if (opcionyear [i] .selected) {stryear = optionyear [i] .Text; }} var mes = document.getElementById ("sltmonth"); opción var = mes.getElementsBytagName ("opción"); var strmonth = ""; for (var i = 0; i <option.length; ++ i) {if (opción [i] .selected) {strmonth = option [i] .Text; }} // Según el año y el mes seleccionados, la cadena de fecha combinada en yyyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" + "1"; // Convertir la cadena de fecha hasta la fecha tipo var sltdate_tmp_1 = nueva fecha (sltdate_tmp_0); // Obtenga el número de semanas en el 1er del mes var WeekDay = sltdate_tmp_1.getday (); // Obtenga el número de semanas seleccionados por la página var weeknumber = document.getElementById ("WeekNumber"); var optionWeek = weeknumber.getElementsBytagName ("opción"); var strweek = ""; var tmp_date = ""; var outputDate_1 = ""; var outputDate_2 = ""; for (var i = 0; i <optionWeek.length; ++ i) {if (opcionweek [i] .selected) {strweek = optionWeek [i] .Text; }} // Al seleccionar la semana 1, calcule el día del año y el mes 1 como varias posibilidades, devuelva la fecha de la semana a domingo y devuelva la fecha de la semana al domingo // el juicio a continuación y así sucesivamente (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); }}}Después de la prueba, hay un error. Cuando el 1 de febrero es el lunes y el año seleccionado es el año promedio, se selecciona la quinta semana de febrero. En este momento, la fecha de inicio de la Semana 5 ya es marzo en lugar de febrero. Por ejemplo, seleccione la quinta semana de febrero de 2010 en este momento, el programa mostrará 2010-03-1 al 2010-03-07.
Hay dos soluciones. Una es forzar el cuadro desplegable Mes a marzo cuando el usuario selecciona la Semana 5. Segundo, forzar el cuadro desplegable semanal a la Semana 4 y mostrar 2010-02-22 al 2010-02-28.
Después de la prueba, hay un error. Cuando el 1 de febrero es el lunes y el año seleccionado es el año promedio, se selecciona la quinta semana de febrero. En este momento, la fecha de inicio de la Semana 5 ya es marzo en lugar de febrero.
Por ejemplo, seleccione la quinta semana de febrero de 2010 en este momento, el programa mostrará 2010-03-1 al 2010-03-07.
Hay dos soluciones. Una es forzar el cuadro desplegable Mes a marzo cuando el usuario selecciona la Semana 5. Segundo, forzar el cuadro desplegable semanal a la Semana 4 y mostrar 2010-02-22 al 2010-02-28.
Después de la prueba, hay un error. Cuando el 1 de febrero es el lunes y el año seleccionado es el año promedio, se selecciona la quinta semana de febrero. En este momento, la fecha de inicio de la Semana 5 ya es marzo en lugar de febrero.
Por ejemplo, seleccione la quinta semana de febrero de 2010 en este momento, el programa mostrará 2010-03-1 al 2010-03-07.
Hay dos soluciones. Una es forzar el cuadro desplegable Mes a marzo cuando el usuario selecciona la Semana 5. Segundo, forzar el cuadro desplegable semanal a la Semana 4 y mostrar 2010-02-22 al 2010-02-28.
Lo anterior es el código de implementación basado en la implementación basada en JavaScript basada en JavaScript seleccionando el número de semanas para mostrar los días de inicio y finalización. ¡Espero que sea útil para todos!