哈喽,最近公司都在赶项目在做的过程中产品提了一个需要查看本周、上周、上个月的需求,现在来记录下代码能直接使用。最后的效果如下图(主要涉及Date()对象的使用):
主要思路(获取周时间段)
/***
- 核心思路:先得到startDateTime(开始时间),随后+6就能得出endDateTime(结束时间)
- 开始时间的计算方式:通过getDay()先获取要计算时间是属于星期几(可能出现:0~6),再通过getDate()获取要计算时间是属于本月中那一天
- 结果会出现两种情况:
- 1、利用本月的天数-归属星期几 = 上周的最后一天。那么通过+1天就能得出计算时间的周一时间
- 2、如果正好时间是周六那么将出现另外一个情况:利用本月的天数-归属星期几 - 6天 =计算时间的周一时间 (如果getDay()获取的时间不是0 ~ 6,而是1~7那么就不会出现这个情况,可是没有这个如果!!!)
*/
获取上周时间段
function getLastWeek(value){
if(value==''|| value==undefined){
return value
}
if(value.length==10){
value = value *1000
}
let myDate = new Date(value - 7 * 24 * 3600 * 1000)
let day = myDate.getDay() // 回退7天后是星期几?
let time = myDate.getDate() - day + (day === 0 ? -6 : 1)
let startTime = new Date(myDate.setDate(time))
startDateTime =
startTime.getFullYear() +
'-' +
(startTime.getMonth() + 1) +
'-' +
startTime.getDate()
let endTime = new Date(myDate.setDate(time + 6))
endDateTime =
endTime.getFullYear() +
'-' +
(endTime.getMonth() + 1) +
'-' +
endTime.getDate()
return {
startDateTime:startDateTime,
endDateTime:endDateTime
}
}
获取本周时间段
function getCurrentWeek(value){
if(value==''|| value==undefined){
return value
}
if(value.length==10){
value = value *1000
}
let myDate = new Date(value)
let day = myDate.getDay() // 回退7天后是星期几?
let time = myDate.getDate() - day + (day === 0 ? -6 : 1)
let startTime = new Date(myDate.setDate(time))
startDateTime =
startTime.getFullYear() +
'-' +
(startTime.getMonth() + 1) +
'-' +
startTime.getDate()
let endTime = new Date(myDate.setDate(time + 6))
endDateTime =
endTime.getFullYear() +
'-' +
(endTime.getMonth() + 1) +
'-' +
endTime.getDate()
return {
startDateTime:startDateTime,
endDateTime:endDateTime
}
}
获取上个月时间段
function getLastMonth(value){
if(value==''|| value==undefined){
return value
}
if(value.length==10){
value = value *1000
}
// 获取上个月时间
let nowdays = new Date(value)
let year = nowdays.getFullYear()
let month = nowdays.getMonth()
if (month === 0) {
month = 12
year = year - 1
}
if (month < 10) {
month = '0' + month
}
let yDate = new Date(year, month, 0)
startDateTime = year + '-' + month + '-01 00:00:00' //上个月第一天
endDateTime = year + '-' + month + '-' + yDate.getDate() + ' 23:59:59' //上个月最后一天
return {
startDateTime:startDateTime,
endDateTime:endDateTime
}
}
获取本月时间段
function getCurrentMonth(value){
if(value==''|| value==undefined){
return value
}
if(value.length==10){
value = value *1000
}
let nowdays = new Date(value)
let year = nowdays.getFullYear()
let month = nowdays.getMonth()+1
if (month < 10) {
month = '0' + month
}
let yDate = new Date(year, month, 0)
startDateTime = year + '-' + month + '-01 00:00:00' //上个月第一天
endDateTime = year + '-' + month + '-' + yDate.getDate() + ' 23:59:59' //上个月最后一天
return {
startDateTime:startDateTime,
endDateTime:endDateTime
}
}
以上就是我对JS Date()获取时间的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟