周数转为日期
思路:
需要的参数:
// year 年
// week 周
// day 需要输出星期几对应的日期 (0-6, 0代表周日)
- 算出该年第一周有几天(用毫秒数表示):
date1 = new Date(year, 0, 1); firstDay = (7-date1.getDay())*dayMS
- 算出最后一周有几天(用毫秒数表示):
day*dayMS
- 减去第一周和最后一周,
week-2
就是满7天的星期数。 - 算出1月1日距离目标日期的毫秒数
date1.getTime()+firstDay+weekMS+day*dayMS
date1.setTime(result);
计算出目标日期的时间戳- 根据需要转化为其他格式
dateFromWeek(year, week, day){
// year 年
// week 周
// day 需要输出星期几对应的日期 (0-6, 0代表周日)
var date1 = new Date(year, 0, 1);
var dayMS = 24*60*60*1000;
var firstDay = (7-date1.getDay())*dayMS;
var weekMS = (week-2)*7*dayMS;
var result = date1.getTime()+firstDay+weekMS+day*dayMS;
date1.setTime(result);
// return date1.toLocaleDateString();
return date1;
}
根据日期算出周数
weekOfYear(year, month, day){
// year 年
// month 月
// day 日
// 每周从周日开始
var date1 = new Date(year, 0, 1);
var date2 = new Date(year, month-1, day, 1);
var dayMS = 24*60*60*1000;
var firstDay = (7-date1.getDay())*dayMS;
var weekMS = 7*dayMS;
date1 = date1.getTime();
date2 = date2.getTime();
return Math.ceil((date2-date1-firstDay)/weekMS)+1;
},