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("");
}
}