前端判断节假日

zh q 2024-08-26 09:33:02 阅读 97

安装并引入 

<code>第一种:

npm i chinese-days

import chineseDays from 'chinese-days'

第二种:

直接浏览器引入,会跟随国务院发布更新

<script src="https://cdn.jsdelivr.net/npm/chinese-days/dist/index.min.js"></script>code>

<script>

const { isHoliday } = chineseDays

console.log(isHoliday('2022-01-01'))

</script>

直接调用

isWorkday 检查某个日期是否为工作日 console.log(isWorkday('2024-01-01')); // false

isHoliday 检查某个日期是否为节假日 console.log(isHoliday('2024-01-01')); // true

isInLieu 检查某个日期是否为调休日

getDayDetail 检查指定日期是否是工作日

// 示例用法

如果指定日期是工作日,则返回 true 和工作日名称,如果是被调休的工作日,

返回 true 和节假日详情。如果是节假日,则返回 false 和节假日详情。

// 正常工作日 周五

console.log(getDayDetail('2024-02-02')); // { "date": "2024-02-02", "work":true,"name":"Friday"}

// 节假日 周末

console.log(getDayDetail('2024-02-03')); // { "date": "2024-02-03", "work":false,"name":"Saturday"}

// 调休需要上班

console.log(getDayDetail('2024-02-04')); // { "date": "2024-02-04", "work":true,"name":"Spring Festival,春节,3"}

// 节假日 春节

console.log(getDayDetail('2024-02-17')); // { "date": "2024-02-17", "work":false,"name":"Spring Festival,春节,3"}

 获取指定日期范围内的所有节假日

getHolidaysInRange 获取指定日期范围内的所有节假日

接收起始日期和结束日期,并可选地决定是否包括周末。

如果包括周末,则函数会返回包括周末在内的所有节假日;否则,只返回工作日的节假日。

即使不包括周末,周末的节假日仍然会被返回

// 示例用法

const start = '2024-04-26';

const end = '2024-05-06';

// 获取从 2024-05-01 到 2024-05-10 的所有节假日,包括周末

const holidaysIncludingWeekends = getHolidaysInRange(start, end, true);

console.log('Holidays including weekends:', holidaysIncludingWeekends.map(d => getDayDetail(d)));

// 获取从 2024-05-01 到 2024-05-10 的节假日,不包括周末

const holidaysExcludingWeekends = getHolidaysInRange(start, end, false);

console.log('Holidays excluding weekends:', holidaysExcludingWeekends.map(d => getDayDetail(d)));

 取指定日期范围内的工作日列表

接收起始日期和结束日期,并可选地决定是否包括周末。如果包括周末,则函数会返回包括周末在内的所有工作日;否则,只返回周一到周五的工作日。

// 示例用法

const start = '2024-04-26';

const end = '2024-05-06';

// 获取从 2024-05-01 到 2024-05-10 的所有工作日,包括周末

const workdaysIncludingWeekends = getWorkdaysInRange(start, end, true);

console.log('Workdays including weekends:', workdaysIncludingWeekends);

// 获取从 2024-05-01 到 2024-05-10 的工作日,不包括周末

const workdaysExcludingWeekends = getWorkdaysInRange(start, end, false);

console.log('Workdays excluding weekends:', workdaysExcludingWeekends);

查找工作日

查找从今天开始 未来的第 {deltaDays} 个工作日。

// 查找从今天开始 未来的第 {deltaDays} 个工作日

// 如果 deltaDays 为 0,首先检查当前日期是否为工作日。如果是,则直接返回当前日期。

// 如果当前日期不是工作日,会查找下一个工作日。

const currentWorkday = findWorkday(0);

console.log(currentWorkday);

// 查找从今天开始未来的第一个工作日

const nextWorkday = findWorkday(1);

console.log(nextWorkday);

// 查找从今天开始之前的前一个工作日

const previousWorkday = findWorkday(-1);

console.log(previousWorkday);

// 可以传第二个参数 查找具体日期的上下工作日

// 查找从 2024-05-18 开始,未来的第二个工作日

const secondNextWorkday = findWorkday(2, '2024-05-18');

console.log(secondNextWorkday);

获取 24 节气的日期

import { getSolarTerms } from "chinese-days";

/** 获取范围内 节气日期数组 */

const solarTerms = getSolarTerms("2024-05-01", "2024-05-20");

solarTerms.forEach(({ date, term, name }) => {

console.log(`${name}: ${date}, ${term}`);

});

// 立夏: 2024-05-05, the_beginning_of_summer

// 小满: 2024-05-20, lesser_fullness_of_grain

// 没有节气 返回 []

getSolarTerms("2024-05-21", "2024-05-25");

// return []

/* 不传 end 参数, 获取某天 节气 */

getSolarTerms("2024-05-20");

// return: [{date: '2024-05-20', term: 'lesser_fullness_of_grain', name: '小满'}]

 阳历转换农历

// 2097-8-7

console.log(getLunarDate('2097-08-07'))

// 2057-9-28

console.log(getLunarDate('2057-09-28'))

// {

// date: "2057-09-28",

// lunarYear: 2057,

// lunarMon: 8,

// lunarDay: 30,

// isLeap: false,

// lunarDayCN: "三十",

// lunarMonCN: "八月",

// lunarYearCN: "二零五七",

// yearCyl: "丁丑",

// monCyl: "己酉",

// dayCyl: "戊子",

// zodiac: "牛"

// }

// 非闰月 和 闰月例子

console.log(getLunarDate('2001-04-27'))

console.log(getLunarDate('2001-05-27'))

根据阳历日期区间,批量获取农历日期

console.log(getLunarDatesInRange('2001-05-21', '2001-05-26'))

农历转换阳历

当为阴历闰月的时候,会出现一个农历日期对应两个阳历日期的情况,所以返回对象形式。

console.log(getSolarDateFromLunar('2001-03-05'))

// {date: '2001-03-29', leapMonthDate: undefined}

console.log(getSolarDateFromLunar('2001-04-05'))

// {date: '2001-04-27', leapMonthDate: '2001-05-27'}

 

 

 

 

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。