前端判斷節(jié)假日的詳細代碼舉例
更新時間:2024年08月02日 08:26:00 作者:zh?q
因為要做一個日歷控件,遇到國家法定節(jié)假日,怎么實現(xiàn)此功能呢?這篇文章主要給大家介紹了關于前端判斷節(jié)假日的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
安裝并引入
第一種:
npm i chinese-days
import chineseDays from 'chinese-days'
第二種:
直接瀏覽器引入,會跟隨國務院發(fā)布更新
<script src="https://cdn.jsdelivr.net/npm/chinese-days/dist/index.min.js"></script>
<script>
const { isHoliday } = chineseDays
console.log(isHoliday('2022-01-01'))
</script>直接調用
isWorkday 檢查某個日期是否為工作日 console.log(isWorkday('2024-01-01')); // false
isHoliday 檢查某個日期是否為節(jié)假日 console.log(isHoliday('2024-01-01')); // true
isInLieu 檢查某個日期是否為調休日
getDayDetail 檢查指定日期是否是工作日
// 示例用法
如果指定日期是工作日,則返回 true 和工作日名稱,如果是被調休的工作日,
返回 true 和節(jié)假日詳情。如果是節(jié)假日,則返回 false 和節(jié)假日詳情。
// 正常工作日 周五
console.log(getDayDetail('2024-02-02')); // { "date": "2024-02-02", "work":true,"name":"Friday"}
// 節(jié)假日 周末
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,春節(jié),3"}
// 節(jié)假日 春節(jié)
console.log(getDayDetail('2024-02-17')); // { "date": "2024-02-17", "work":false,"name":"Spring Festival,春節(jié),3"}獲取指定日期范圍內的所有節(jié)假日
getHolidaysInRange 獲取指定日期范圍內的所有節(jié)假日
接收起始日期和結束日期,并可選地決定是否包括周末。
如果包括周末,則函數(shù)會返回包括周末在內的所有節(jié)假日;否則,只返回工作日的節(jié)假日。
即使不包括周末,周末的節(jié)假日仍然會被返回
// 示例用法
const start = '2024-04-26';
const end = '2024-05-06';
// 獲取從 2024-05-01 到 2024-05-10 的所有節(jié)假日,包括周末
const holidaysIncludingWeekends = getHolidaysInRange(start, end, true);
console.log('Holidays including weekends:', holidaysIncludingWeekends.map(d => getDayDetail(d)));
// 獲取從 2024-05-01 到 2024-05-10 的節(jié)假日,不包括周末
const holidaysExcludingWeekends = getHolidaysInRange(start, end, false);
console.log('Holidays excluding weekends:', holidaysExcludingWeekends.map(d => getDayDetail(d)));
取指定日期范圍內的工作日列表
接收起始日期和結束日期,并可選地決定是否包括周末。如果包括周末,則函數(shù)會返回包括周末在內的所有工作日;否則,只返回周一到周五的工作日。
// 示例用法
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);
// 可以傳第二個參數(shù) 查找具體日期的上下工作日
// 查找從 2024-05-18 開始,未來的第二個工作日
const secondNextWorkday = findWorkday(2, '2024-05-18');
console.log(secondNextWorkday);
獲取 24 節(jié)氣的日期
import { getSolarTerms } from "chinese-days";
/** 獲取范圍內 節(jié)氣日期數(shù)組 */
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
// 沒有節(jié)氣 返回 []
getSolarTerms("2024-05-21", "2024-05-25");
// return []
/* 不傳 end 參數(shù), 獲取某天 節(jié)氣 */
getSolarTerms("2024-05-20");
// return: [{date: '2024-05-20', term: 'lesser_fullness_of_grain', name: '小滿'}]
陽歷轉換農(nóng)歷
// 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'))
根據(jù)陽歷日期區(qū)間,批量獲取農(nóng)歷日期
console.log(getLunarDatesInRange('2001-05-21', '2001-05-26'))
農(nóng)歷轉換陽歷
當為陰歷閏月的時候,會出現(xiàn)一個農(nóng)歷日期對應兩個陽歷日期的情況,所以返回對象形式。
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'}
總結
到此這篇關于前端判斷節(jié)假日的文章就介紹到這了,更多相關前端判斷節(jié)假日內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一文詳解如何將Javascript打包成exe可執(zhí)行文件
這篇文章主要介紹了將Javascript打包成exe可執(zhí)行文件的相關資料,這種方法適用于需要將JavaScript項目打包成單個獨立運行的可執(zhí)行文件的開發(fā)者,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04
arcgis for js 修改infowindow樣式的方法
下面小編就為大家?guī)硪黄猘rcgis for js 修改infowindow樣式的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
JavaScript算法題之如何將一個數(shù)組旋轉k步
這篇文章主要給大家介紹了關于JavaScript算法題之如何將一個數(shù)組旋轉k步的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-03-03
JavaScript判斷元素是否在可視區(qū)域的三種方法
這這篇文章給大家總結了JavaScript判斷元素是否在可視區(qū)域的三種方法,getBoundingClientRect,IntersectionObserver和offsetTop、scrollTop這三種方法,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下2023-12-12

