js中如何将每星期换成具体的时间段的方法?

JavaScript012

js中如何将每星期换成具体的时间段的方法?,第1张

你好,

其实题设还少一个条件,我们通常所谓的第几周,是相对于某一年的。因此应该还有一个变量(年)。

好了,条件齐全了我们来看一下代码:

// 变量第几周

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)

重要:国标每周第一天为周日,如果按国内每周第一天为周一算,计算日期结果应加一天。

希望是你想要的结果,如有疑问可追问。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>test</title>

</head>

<script>

//格式化日期:yyyy-MM-dd

function formatDate(date) {

var myyear = date.getFullYear()

var mymonth = date.getMonth()+1

var myweekday = date.getDate()

if(mymonth <10){

mymonth = "0" + mymonth

}

if(myweekday <10){

myweekday = "0" + myweekday

}

return (myyear+"-"+mymonth + "-" + myweekday)

}

//

function getXDate(year,weeks,weekDay){

weekDay%=7

var date = new Date(year,"0","1")

var time = date.getTime()

weekDay==0 ? time+=weeks*7*24*3600000 : time+=(weeks-1)*7*24*3600000//这里需要注意,现在这种模式是以周日为一周的结束,如果设定周日为一周的开始,去掉这个判断,选择后者。

date.setTime(time)

return getNextDate(date,weekDay)

}

function getNextDate(nowDate,weekDay){

var day = nowDate.getDay()

var time = nowDate.getTime()

var sub = weekDay-day

time+=sub*24*3600000

nowDate.setTime(time)

return nowDate

}

//注意,其中的参数:第一个为年,第二个为第几周,第三个为周数,0为周日,1为周一;

alert("1983第1周的星期1是:"+formatDate(getXDate(1983,1,1)))

alert("1983第1周的星期日是:"+formatDate(getXDate(1983,1,0)))

</script>

<body>

</body>

</html>