当前位置: 代码迷 >> 综合 >> js中获取指定日期在本年度的周数和yyyy-mm-dd字符串转日期
  详细解决方案

js中获取指定日期在本年度的周数和yyyy-mm-dd字符串转日期

热度:55   发布时间:2024-01-21 00:35:24.0
//求当前天所在周数
//selectDate为当前日期
//startDay为日期偏移量 0:星期天,1:为星期一,2,:星期二,依次类推
function getDayInWeekOfYear(selectDate,startDay){
 //将字符串转化为date
 var date = eval('new Date(' + selectDate.replace(/\d+(?=-[^-]+$)/,function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
 var year =date.getFullYear();
 var start_date=new Date(year,0,1);
  //求该年开始时间,本年一月一号所在的下一个周三
  if(start_date.getDay()>startDay){
    start_date.setDate(start_date.getDate() +((7-start_date.getDay())+startDay));
  }else if(start_date.getDay()<startDay){
   start_date.setDate(start_date.getDate() +(startDay-start_date.getDay()));
  }
 var days=(date.getTime()-start_date.getTime())/(24*60*60*1000);
 //如果days小于0说明该天属于上一年最后一周,计算上一年的最后一周
 if(days<0){
  var last_year_start_date=new Date(year-1,0,1);
  var last_year_end_date=new Date(year-1,11,31);
  //求该年开始时间,本年一月一号所在的下一个周三
   if(last_year_start_date.getDay()>startDay){
     last_year_start_date.setDate(last_year_start_date.getDate() +((7-last_year_start_date.getDay())+startDay));
   }else if(last_year_start_date.getDay()<startDay){
    last_year_start_date.setDate(last_year_start_date.getDate() +(startDay-last_year_start_date.getDay()));
   }
   //求该年结束时间,本年12月31号所在的下一个周三
   if(last_year_end_date.getDay()>=startDay){
    last_year_end_date.setDate(last_year_end_date.getDate() +((7-last_year_end_date.getDay())+startDay));
   }else if(last_year_end_date.getDay()<startDay){
    last_year_end_date.setDate(last_year_end_date.getDate() +(startDay-last_year_end_date.getDay()));
   }
   //该年有多少天
  var days=(last_year_end_date.getTime()-last_year_start_date.getTime())/(24*60*60*1000);
  //该年有多少周
  var weeks=days/7.0;
  weeks=weeks<10?"0"+weeks:weeks;
  return (year-1)+"-"+weeks;
 }
 var weeks =Math.floor(days/7.0+1);
 weeks=weeks<10?"0"+weeks:weeks;
 return year+"-"+weeks;
}
??
  相关解决方案