你好,
其实题设还少一个条件,我们通常所谓的第几周,是相对于某一年的。因此应该还有一个变量(年)。
好了,条件齐全了我们来看一下代码:
// 变量第几周var week = 3
// 假设是2017年
var year = 2017
// 一天时间的毫秒时长
var daySeconds = 24 * 3600 * 1000
// 指定年份第一天的日期对象,即:一月一日
var firstDayOfYear = new Date(year + '/01/01')
/**
* 计算第一周的第一天日期对象
* 通过当年的第一天取得是星期几,用当年的第一天减去第一周已经过去的几天,得到第一周的第一天
*/
var firstDayOfFirstWeek = new Date(firstDayOfYear.getTime() - firstDayOfYear.getDay() * daySeconds)
/**
* 计算指定第week周的第一天
* week-1:第week周,区间应该是第(week - 1)周结束后开始算起
* 7:一周有7天
*/
var firstDayOfThisWeek = new Date(firstDayOfFirstWeek.getTime() + (week - 1) * 7 * daySeconds)
/**
* 计算指定第week周的最后一天
* 6:一周共7天,开始那一天加上6天得到最后一天
*/
var lastDayOfThisWeek = new Date(firstDayOfThisWeek.getTime() + 6 * daySeconds)
var startDayStr = firstDayOfThisWeek.getFullYear() + '-' + (firstDayOfThisWeek.getMonth() + 1) + '-' + firstDayOfThisWeek.getDate()
var endDayStr = lastDayOfThisWeek.getFullYear() + '-' + (lastDayOfThisWeek.getMonth() + 1) + '-' + lastDayOfThisWeek.getDate()
console.log('2017年第' + week + '周:' + startDayStr + '——' + endDayStr)
重要:国标每周第一天为周日,如果按国内每周第一天为周一算,计算日期结果应加一天。
希望是你想要的结果,如有疑问可追问。
formatDate:function(date){
varnow=newDate(date)
varyear=now.getYear()
varmonth=now.getMonth()+1
vardate=now.getDate()
varhour=now.getHours()
varminute=now.getMinutes()
varsecond=now.getSeconds()
return"20"+year+"."+month+"."+date
},
扩展资料
js时间转换(时间戳转date,年月日时分秒)
使用:
1.formatDateTime("时间戳","yyyy-MM-dd")
2.formatDateTime("时间戳","yyyyMMdd")
exportfunctionformatDateTime(time,format){
vart=newDate(time)
vartf=function(i){return(i<10?'0':'')+i}
returnformat.replace(/yyyy|MM|dd|HH|mm|ss/g,function(a){
switch(a){
case'yyyy':
returntf(t.getFullYear())
break
case'MM':
returntf(t.getMonth()+1)
break
case'mm':
returntf(t.getMinutes())
break
case'dd':
returntf(t.getDate())
break
case'HH':
returntf(t.getHours())
break
case'ss':
returntf(t.getSeconds())
break
}
})
}