js获取指定日期周数以及星期几的小例子
JS获取日期时遇到如下需求,根据某年某周获取一周的日期。如开始日期规定为星期四到下一周的星期五为一周。
代码如下:
functiongetNowFormatDate(theDate) { varday=theDate; varYear=0; varMonth=0; varDay=0; varCurrentDate=""; //初始化时间 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; } returnCurrentDate; } functionisInOneYear(_year,_week){ if(_year==null||_year==''||_week==null||_week==''){ returntrue; } vartheYear=getXDate(_year,_week,4).getFullYear(); if(theYear!=_year){ returnfalse; } returntrue; } //获取日期范围显示 functiongetDateRange(_year,_week){ varbeginDate; varendDate; if(_year==null||_year==''||_week==null||_week==''){ return""; } beginDate=getXDate(_year,_week,4); endDate=getXDate(_year,(_week-0+1),5); returngetNowFormatDate(beginDate)+"至"+getNowFormatDate(endDate); } //这个方法将取得某年(year)第几周(weeks)的星期几(weekDay)的日期 functiongetXDate(year,weeks,weekDay){ //用指定的年构造一个日期对象,并将日期设置成这个年的1月1日 //因为计算机中的月份是从0开始的,所以有如下的构造方法 vardate=newDate(year,"0","1"); //取得这个日期对象date的长整形时间time vartime=date.getTime(); //将这个长整形时间加上第N周的时间偏移 //因为第一周就是当前周,所以有:weeks-1,以此类推 //7*24*3600000是一星期的时间毫秒数,(JS中的日期精确到毫秒) time+=(weeks-1)*7*24*3600000; //为日期对象date重新设置成时间time date.setTime(time); returngetNextDate(date,weekDay); } //这个方法将取得某日期(nowDate)所在周的星期几(weekDay)的日期 functiongetNextDate(nowDate,weekDay){ //0是星期日,1是星期一,... weekDay%=7; varday=nowDate.getDay(); vartime=nowDate.getTime(); varsub=weekDay-day; if(sub<=0){ sub+=7; } time+=sub*24*3600000; nowDate.setTime(time); returnnowDate; }
如获取2016年第一周日期,从周四开始算。则第一周的日期范围为2016-01-07至2016-01-15
在提供一段调用的参考代码:
//日期处理 functiondateRange(){ var_year=$("#_year").val(); var_week=$("#_week").val(); if(isInOneYear(_year,_week)){ varshowDate=getDateRange(_year,_week); $("#_dateRange_import").html(showDate); }else{ alert(_year+"年无"+_week+"周,请重新选择"); $("#_week").val(""); } }