首先介绍一些基本概念,如下:

const date = new Date() // 获取当前时间的标准格式,Wed May 25 2022 17:02:12 GMT+0800 (中国标准时间),表示2022年5月25日
const year = date.getFullYear() // 获取年,2022
const month = date.getMonth() // 获取月,4(0-11表示1-12月,这里需要注意)
const day = date.getDate() // 获取日,25(1-31)
const oneDay = new Date(year, month, day) // 获取指定时间的标准格式
new Date(2022, 4, 25)等价于new Date('2022-05-25')

再介绍一些基本方法,如下:

const date = new Date()
/**
 * 获取第一天
 */
date.setDate(1)
new Date(year, month, 1)
/**
 * 获取最后一天
 * 值得注意的是,如果day取值为0,意味着取的是date时间的上一个月的最后一天,简单理解:date当前月的第一天,再减去一天
 */
date.setDate(0)
new Date(year, month, 0)
new Date(year, month, new Date(year, month, 0).getDate())

最后实现,如下:

/**
 * 获取本月第一天
 */
const getNowMonthFirst = () => {
	const date = new Date()
  	date.setDate(1)
  	return date
}

/**
* 获取本月最后一天
*/
const getNowMonthLast = () => {
  	const date = new Date()
 	const enddate = new Date(date.getFullYear(), date.getMonth() + 1, 0)
 	return enddate
}

/**
* 获取上月第一天
*/
const getLastMonthFirst = () => {
 	const date = new Date()
 	const firstDate = new Date(date.getFullYear(), date.getMonth() - 1, 1);
  	return firstDate
}

/**
* 获取上月最后一天
*/
const getLastMonthLast = () => {
 	const date = new Date()
 	// 获取上个月的最后一天是几号day
 	const day = new Date(date.getFullYear(), date.getMonth(), 0).getDate()
 	const enddate = new Date(date.getFullYear(), date.getMonth() - 1, day)
  	return enddate
}
或者
const getLastMonthLast = () => {
 	const date = new Date()
 	const enddate = new Date(date.getFullYear(), date.getMonth(), 0)
  	return enddate
}
或者
const getLastMonthLast = () => {
 	const date = new Date()
 	date.setDate(0)
  	return date
}

/**
* 获取指定date所在月的第一天
* 指定时间date形式不限:2022-05-20、2022/05/20...
*/
const getMonthFirst = (date) => {
	const stringDate = new Date(date)
 	const enddate = new Date(stringDate.getFullYear(), stringDate.getMonth(), 1)
 	return enddate
}

/**
* 获取指定date所在月的最后一天
* 指定时间date形式不限:2022-05-20、2022/05/20...
*/
const getMonthLast = (date) => {
	const stringDate = new Date(date)
 	const enddate = new Date(stringDate.getFullYear(), stringDate.getMonth() + 1, 0)
 	return enddate
}
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐