Recentemente, encontrei uma página de consulta em um projeto, onde uma condição de consulta é exibir o número selecionado de dias a dias da semana com base no número de ano, mês e semana selecionado. Eu procurei on -line e descobri que havia outros semelhantes, mas não exatamente os mesmos, então tive que fazer isso sozinho. A idéia é primeiro obter o dia da semana no 1º do ano e no mês do ano e depois calcular a data da segunda -feira da semana.
Tomando isso como o ponto base, o dia final da primeira semana é adicionado a este dia, o dia inicial da segunda semana é adicionado a este dia, o dia final é adicionado a hoje, o dia final é adicionado a hoje e assim por diante, até que o dia de início e o dia final da quinta semana seja calculado.
O código específico é o seguinte:
// Este método possui dois parâmetros. A data é o parâmetro de data fornecido e os dias são o número de dias que precisam ser adicionados ou subtraídos nessa data. // por exemplo, Add (2010-10-01, -3) retorna a data de 3 dias daqui para frente de 2010-10-01, ou seja, 2010-09-28-28 Função Adddate (data, dias) {var d = new Date (data); d.setDate (d.getdate ()+dias); var m = d.getMonth ()+1; var tmpdate = d.getlyear () + "/" + m + "/" + d.getdate (); var resultDate = nova data (tmpdate); retorno resultado date; } // Converta o ano e o mês selecionados para a função AAAA-MM-DD alterado var mês = 0; var dia = 0; var currentDate = ""; ano = dateIn.getYear (); mês = dateIn.getMonth () + 1; Dia = dateIn.getDate (); currentDate = ano + "-"; if (mês> 10) {currentDate = currentDate + mês + "-"; } else {currentDate = currentDate + "0" + mês + "-"; } if (dia> 10) {currentDate = currentDate + dia; } else {currentDate = currentDate + "0" + dia; } retornar currentDate; } // Calcule a data de início e término da semana de acordo com a semana selecionada WeekTodate (WeekNumber, strweekday, dateIn) {// a data de início da saída var outputDate_1 = ""; // a data final da saída var outputDate_2 = ""; var tmp_date = ""; // Se o dia selecionado no 1º do ano for domingo, a data da segunda-feira é a data do dia-6 if (strweekday == '0') {outputDate_1 = addDate (datein, -6); } // Se o dia do 1º do ano e o mês selecionado for segunda -feira, o segundo parâmetro será definido como 0 e assim por diante. 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') {// Os pontos base de cálculo do dia de início e do final da primeira semana são outputDate_1, então o document.getElementById ("spNdate"). value = alteraçãoTeFormat (outputDate_1); temp_date = addDate (outputDate_1,+6); document.getElementById ("FinationTime"). Value = AlterilEFormat (temp_date); } else {// Os dias de início e fim após a semana 2 são calculados usando o outputDate_2 como o documento do ponto de base.getElementById ("spndate"). temp_date = addDate (outputDate_2,+6); document.getElementById ("FinationTime"). Value = AlterilEFormat (temp_date); }} função getFromTodateOfSelectedWeek () {var ano = document.getElementById ("sltyear"); var optionYear = ano.getElementsByTagName ("option"); var stryear = ""; for (var i = 0; i <optionYear.length; ++ i) {if (opcionalyear [i] .Selected) {stryear = opcionYear [i] .text; }} var mês = document.getElementById ("sltmonth"); var option = mês.getElementsByTagName ("option"); var strmonth = ""; for (var i = 0; i <option.Length; ++ i) {if (opção [i] .Selected) {strmonth = opção [i] .text; }} // De acordo com o ano e o mês selecionados, a string de data combinada em yyyy/mm/01 var sltdate_tmp_0 = stryear + "/" + strmonth + "/" "1"; // Converta a string de data em data do tipo var sltdate_tmp_1 = new Date (sltdate_tmp_0); // Obtenha o número de semanas no 1º do mês var weekday = sltdate_tmp_1.getday (); // obtém o número de semanas selecionadas pela página 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; }} // Ao selecionar a semana 1, calcule o dia do ano e o mês 1 como várias possibilidades, retorne a data da semana ao domingo e retorne a data da semana para domingo // o seguinte julgamento e assim por diante (strweek == '1') {if (dia da semana == '0') {weekTodate (strweek, '0', sltdate; } 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); }}}Após o teste, há um bug. Quando 1 de fevereiro é segunda -feira e o ano selecionado é o ano médio, a quinta semana de fevereiro é selecionada. Neste momento, a data de início da semana 5 já é março, em vez de fevereiro. Por exemplo, selecione a 5ª semana de fevereiro de 2010 no momento, o programa exibirá 2010-03-1 a 2010-03-07.
Existem duas soluções. Um deve forçar a caixa suspensa do mês a março quando o usuário selecionar a semana 5. Segundo, forçar a caixa suspensa semanal para a semana 4 e exibir 2010-02-22 a 22-02-2010.
Após o teste, há um bug. Quando 1 de fevereiro é segunda -feira e o ano selecionado é o ano médio, a quinta semana de fevereiro é selecionada. Neste momento, a data de início da semana 5 já é março, em vez de fevereiro.
Por exemplo, selecione a 5ª semana de fevereiro de 2010 no momento, o programa exibirá 2010-03-1 a 2010-03-07.
Existem duas soluções. Um deve forçar a caixa suspensa do mês a março quando o usuário selecionar a semana 5. Segundo, forçar a caixa suspensa semanal para a semana 4 e exibir 2010-02-22 a 22-02-2010.
Após o teste, há um bug. Quando 1 de fevereiro é segunda -feira e o ano selecionado é o ano médio, a quinta semana de fevereiro é selecionada. Neste momento, a data de início da semana 5 já é março, em vez de fevereiro.
Por exemplo, selecione a 5ª semana de fevereiro de 2010 no momento, o programa exibirá 2010-03-1 a 2010-03-07.
Existem duas soluções. Um deve forçar a caixa suspensa do mês a março quando o usuário selecionar a semana 5. Segundo, forçar a caixa suspensa semanal para a semana 4 e exibir 2010-02-22 a 22-02-2010.
O acima é o código de implementação com base na implementação baseada em JavaScript com base no JavaScript, selecionando o número de semanas para exibir os dias de início e término. Espero que seja útil para todos!