周粒度处理
时间控件
<ul class="fl" style="margin-left: 20px;">
<li class="fl TimeFiledfl">
<input id="timeField_week" class="Wdate TimeFiled fl" />
</li>
</ul>
js处理
function initTime(){
/***********周粒度处理*********************/
var today = new Date();
var weekToday = new Date();//获取上周最大日期
if(today.getDay()==0){//星期日
weekToday.setDate(weekToday.getDate()-7);
}else{
weekToday.setDate(weekToday.getDate()-weekToday.getDay());
}
var tY = today.getFullYear();
var tM = today.getMonth()+1;
var tD = today.getDate();
var week = getYearWeek(tY,tM,tD);
if(week=='01'){
tY = tY - 1;
week = getNumOfWeeks(tY);
}else{
week = week - 1;
}
week = week<10?("0"+week):week;
$("#timeField_week").val(tY+"年第"+week+'周');
$('#timeField_week').bind('focus',function(){
WdatePicker({isShowWeek:true,errDealMode:3,maxDate:weekToday.format("yyyy-MM-dd"),autoPickDate:true,firstDayOfWeek:1,
onpicked:function() {
if($dp.cal.getP('w')==0){
$dp.$('timeField_week').value=$dp.cal.getP('y')+'年第'+eval($dp.cal.getNewP('W')+"-1")+'周';
}else{
$dp.$('timeField_week').value=$dp.cal.getP('y')+'年第'+$dp.cal.getNewP('W')+'周';
}
}
});});
}
/*******************周粒度处理***************************/
var getYearWeek = function (a, b, c) {
/*
date1是当前日期
date2是当年第一天
d是当前日期是今年第多少天
用d + 当前年的第一天的周差距的和在除以7就是本年第几周
*/
var date1 = new Date(a, parseInt(b) - 1, c), date2 = new Date(a, 0, 1),
d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
return Math.ceil((d + ((date2.getDay() + 1) - 1)) / 7);
};
//求一年总共有多少周
function getNumOfWeeks(year){
var d=new Date(year,0,1);
var yt=( ( year%4==0 && year%100!=0) || year%400==0)? 366:365;
return Math.ceil((yt-d.getDay())/7.0);
}
获取某年某周对应的起止日期
//weekTime -- 201724 (2017年第24周)
function getWeekStartDay(weekTime){
var year = weekTime.substring(0,4);
var week = weekTime.substring(4,6);
var cdate=new Date();
cdate.setFullYear(year);
cdate.setMonth(0);
cdate.setDate(1);
var cweek = 7-cdate.getDay()+1;
cdate.setDate(1+cweek);
console.log(cdate);
var oneDayLong = 24 * 3600 * 1000;
var ctime = cdate.getTime()+oneDayLong*(week-2)*7;
var oToday = new Date();
oToday.setTime(ctime);
var currentDay=oToday.getDay();
if(currentDay==0){currentDay=7;}
var mondayTime=oToday.getTime()-(currentDay-1)*24*60*60*1000; //对应周起始日期
//var sundayTime=oToday.getTime()+(7-currentDay)*24*60*60*1000; //对应周结束日期
return new Date(mondayTime);
}