根據年份獲取周次,根據周次獲取日期範圍,獲取當前年份,周次列表資訊。
阿新 • • 發佈:2019-01-05
在原文的基礎上改的,適應我這邊的需求,從週一開始到週日(姑且算個原創哈,原文連結在最下邊)。
(1)根據年份獲取周次
(2) 獲取當前年份周次
這個本放在最上邊的。直接擱這兒啦。
(1)根據年份獲取周次
(2) 獲取當前年份周次
(3) 根據選擇周次獲取日期時間範圍
誰有更簡單的方法也告知下,一起參詳參詳。
function getNowFormatDate(theDate){ var day = theDate; var Year = 0; var Month = 0; var Day = 0; var CurrentDate = ""; // 初始化時間 Year= day.getFullYear();// ie火狐下都可以 Month= day.getMonth()+1; Day = day.getDate(); CurrentDate += Year + "-"; if (Month >= 10) { CurrentDate += Month + "-"; } else { CurrentDate += "0" + Month + "-"; } if (Day >= 10 ){ CurrentDate += Day ; } else { CurrentDate += "0" + Day ; } return CurrentDate; } //這個方法將取得某年(year)第幾周(weeks)的星期幾(weekDay)的日期 function getXDate(year,weeks,weekDay){ // 用指定的年構造一個日期物件,並將日期設定成這個年的1月1日 // 因為計算機中的月份是從0開始的,所以有如下的構造方法 var date = new Date(year,"0","1"); // 取得這個日期物件 date 的長整形時間 time var time = date.getTime(); // 將這個長整形時間加上第N周的時間偏移 // 因為第一週就是當前周,所以有:weeks-1,以此類推 // 7*24*3600000 是一星期的時間毫秒數,(JS中的日期精確到毫秒) time+=(weeks-1)*7*24*3600000; // 為日期物件 date 重新設定成時間 time date.setTime(time); return getNextDate(date,weekDay); } // 這個方法將取得 某日期(nowDate) 所在周的星期幾(weekDay)的日期 function getNextDate(nowDate,weekDay){ // 0是星期日,1是星期一,... weekDay%=7; var day = nowDate.getDay(); var time = nowDate.getTime(); var sub = weekDay-day; if(sub <= 0){ sub += 7; } time+=sub*24*3600000; nowDate.setTime(time); return nowDate; } function isInOneYear(_year,_week){ if(_year == null || _year == '' || _week == null || _week == ''){ return true; } var theYear = getXDate(_year,_week,7).getFullYear(); if(theYear != _year){ return false; } return true; } // 獲取日期範圍顯示 function getDateRange(_year,_week){ var beginDate; var endDate; if(_year == null || _year == '' || _week == null || _week == ''){ return ""; } beginDate = getXDate(_year,_week,1); endDate = getXDate(_year,(_week - 0 + 1),7); return getNowFormatDate(beginDate) + " 至 "+ getNowFormatDate(endDate); } //日期處理 function dateRange(obj){ //獲取當前年 var year = $("#yearId").val(); if(isInOneYear(year,obj.value)){ var showDate = getDateRange(year,obj.value); document.getElementById("_dateRange_import").value=showDate; }else{ alert(year+"年無"+obj.value+"周,請重新選擇"); return; } }
</pre><pre name="code" class="javascript">/** * 獲取當前年份共有多少周次(本次未用到) */ function getNumOfWeeks(){ var myDate = new Date(); var year = myDate.getFullYear(); //獲取當前年 var d=new Date(year,0,1); var yt=(( year%4==0 && year%100!=0) || year%400==0)? 366:365; var allwk = Math.ceil((yt-d.getDay())/7.0); return allwk; }
//獲取當前日期在當前年第幾周函式封裝 function theWeek() { var totalDays = 0; now = new Date(); years = now.getYear() if (years < 1000) years += 1900 var days = new Array(12); days[0] = 31; days[2] = 31; days[3] = 30; days[4] = 31; days[5] = 30; days[6] = 31; days[7] = 31; days[8] = 30; days[9] = 31; days[10] = 30; days[11] = 31; //判斷是否為閏年,針對2月的天數進行計算 if (Math.round(now.getYear() / 4) == now.getYear() / 4) { days[1] = 29 } else { days[1] = 28 } if (now.getMonth() == 0) { totalDays = totalDays + now.getDate(); } else { var curMonth = now.getMonth(); for (var count = 1; count <= curMonth; count++) { totalDays = totalDays + days[count - 1]; } totalDays = totalDays + now.getDate(); } //得到第幾周 var week = Math.ceil(totalDays / 7);//原始碼使用的是round return week; } //根據選擇年份獲取周次 function getWeeks(obj){ //年份變更,更改周次對應日期 $("#_dateRange_import").val(""); var year = obj.value; var d=new Date(year,0,1); var yt=(( year%4==0 && year%100!=0) || year%400==0)? 366:365; var allwk = Math.ceil((yt-d.getDay())/7.0); //獲取當前年份,判斷選擇年份是否是當前年份 var myDate = new Date(); var curYear = myDate.getFullYear(); var curweek = document.getElementById("showweeks"); if(curYear==year){//如果是當前年份,獲取當前日子的周次 var theweek = theWeek(); var str = ""; str+="周次:<select id=\"dateSearch\" onchange=\"dateRange(this)\"><option value=\"\">請選擇周次</option>"; for(var i=theweek;i<=allwk;i++){ str+="<option value="+i+">第"+i+"周</option>" ; } str+= "</select>"; curweek.innerHTML = str ; }else{//如果不是獲取年份內的所有周次值 var str = ""; str+="周次:<select id=\"dateSearch\"onchange=\"dateRange(this)\"><option value=\"\">請選擇周次</option>"; for(var i=1;i<=allwk;i++){ str+="<option value="+i+">第"+i+"周</option>" ; } str+= "</select>"; curweek.innerHTML = str ; } }
這個本放在最上邊的。直接擱這兒啦。
<jsp:useBean id="today" class="java.util.GregorianCalendar" />
<table>
<tr>
<td>
年份 :
<select id="yearId" onchange="getWeeks(this)" >
<c:forEach begin="${today.get(1)}" end="2020" var="i" step="1">
<option value="<c:out value='${i}'/>"><c:out value='${i}'/>年</option>
</c:forEach>
</select>
</td>
<td id="showweeks">
周次:
<select id="dateSearch" onchange="dateRange(this)">
<option value="">請選擇周次</option>
<c:forEach begin="${today.get(3)}" end="52" var="i" step="1">
<option value="<c:out value='${i}'/>">第<c:out value='${i}'/>周</option>
</c:forEach>
</select>
</td>
<td>
時間段:<input id ="_dateRange_import" readonly="readonly" type="text" />
</td>
</tr>
</table>
原文連結: js獲取指定日期週數以及星期幾的小例子,這個是從每週的週四開始計算的。