java 如何判斷一天是否為工作日?節假日?

老马啸西风發表於2024-08-26

目的

判斷一天是否為節假日。

在區分不同的工作場景時,這個變數是比較有用的。

基礎資料如何獲取?

節假日查詢

百度搜尋節假日,國務院放假髮文地址

https://www.gov.cn/zhengce/zhengceku/202310/content_6911528.htm

節假日資料獲取

方式一:手動維護日期資料

1.初始化資料庫表sql

drop database if exists kaoqin;
create database kaoqin;

use kaoqin;
CREATE TABLE `no_work_day` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `day` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 初始化資料

建議這種方式,可以更加靈活。

可以儲存每一天的資料,也可以簡單些只配置特殊的節假日。

方式2:三方介面

呼叫api查詢(2020年及之前的年份才能用此api)

首先查詢百度萬年曆節介面(其中包含全年節假日資料),得到json資料 (全年節假日資訊在json的holiday中,query=2020,其實預設就是202001,其他月份的萬年曆請求如query=202004)

請求的api:

https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=2020&resource_id=6018

除了節假日,還有哪些因素可能影響工作日的判斷?

除了節假日,還有幾個因素可能影響工作日的判斷:

  1. 公司政策:不同的公司可能有不同的工作日安排,例如某些公司可能有彈性工作制度,允許員工在某些日子遠端工作或選擇休息日。

  2. 行業特性:某些行業可能因為其特殊性而有不同的工作日安排。例如,零售和服務業在週末和節假日可能更忙碌,因此這些日子可能被視為工作日。

  3. 地區差異:不同地區的工作習慣和文化可能影響工作日的安排。例如,在某些地區,可能存在半天工作日或特定的宗教節日。

  4. 季節性變化:在某些行業,如農業或旅遊業,工作日可能會根據季節性需求進行調整。

  5. 特殊事件:如自然災害、突發公共衛生事件(如疫情)或其他緊急情況可能影響正常的工作日安排。

  6. 政府政策:政府可能會因為特殊原因調整工作日,例如為了緩解交通壓力而實行的錯峰上下班政策。

  7. 員工個人情況:員工的個人情況,如病假、年假、產假等,也可能影響特定日期是否為工作日。

  8. 國際日期變更:對於跨國公司,不同國家的節假日和工作日安排可能不同,需要綜合考慮。

  9. 時區差異:對於全球分佈的團隊,時區差異可能意味著某些地區的工作日與其他地區不同。

  10. 宗教節日:不同宗教有不同的節日,這些節日可能會影響某些員工的工作日。

在編寫程式判斷工作日時,需要根據具體情況考慮這些因素,並相應地調整邏輯以適應不同的需求。

相關文章