生成指定范围的日期
const dateRangeGenerator = function* (start, end, step = 1) { let d = start while (d < end) { yield new Date(d) d.setDate(d.getDate() + step) }};// 例子[...dateRangeGenerator(new Date('2021-06-01'), new Date('2021-06-04'))]// [ 2021-06-01, 2021-06-02, 2021-06-03 ]
日期加减xx天
const addDaysToDate = (date, n) => { const d = new Date(date) d.setDate(d.getDate() + n) return d.toISOString().split('T')[0]};// 例子addDaysToDate('2020-10-15', 10) // '2020-10-25'addDaysToDate('2020-10-15', -10) // '2020-10-05'
日期加减xx分钟
const addMinutesToDate = (date, n) => { const d = new Date(date) d.setTime(d.getTime() + n * 60000) return d.toISOString().split('.')[0].replace('T',' ')};// 例子addMinutesToDate('2020-10-19 12:00:00', 10) // '2020-10-19 12:10:00'addMinutesToDate('2020-10-19', -10) // '2020-10-18 23:50:00'
获取日期所属的季度和年份
const quarterOfYear = (date = new Date()) => [ Math.ceil((date.getMonth() + 1) / 3), date.getFullYear()];// 例子quarterOfYear(new Date('07/10/2018')); // [ 3, 2018 ]quarterOfYear() // [ 4, 2020 ]
获取日期星期
const dayName = (date, locale = 'zh-CN') => new Date(date).toLocaleDateString(locale, { weekday: 'long' })// 例子dayName(new Date('2021-09-22'), 'zh-CN') // 星期三
判断是否是闰年
const isLeapYear = year => new Date(year, 1, 29).getMonth() === 1// 例子isLeapYear(2019) // falseisLeapYear(2020) // true
判断是否是工作日
const isWeekday = (d = new Date()) => d.getDay() % 6 !== 0// 例子isWeekday() // true
判断是否是周末
const isWeekend = (d = new Date()) => d.getDay() % 6 === 0// 例子isWeekend()