怎么判断节假日和休息日
时间: 2023-11-13 18:05:10 浏览: 149
判断节假日和休息日的方法有很多种,下面介绍两种常用的方法:
## 方法一:调用第三方 API
可以使用第三方 API 来判断一个日期是否为节假日或者休息日,例如阿里云的节假日 API。
使用方法如下:
1. 首先注册阿里云账号,并开通节假日 API 的服务;
2. 调用 API 的接口,传入需要判断的日期和 API 的appcode,即可得到判断结果。
示例代码如下:
```python
import requests
def is_holiday(date):
"""
判断日期是否为节假日
:param date: 日期,格式为 'YYYY-MM-DD'
:return: True 或者 False
"""
url = "http://tool.bitefu.net/jiari/"
headers = {"Authorization": "APPCODE your_appcode_here"}
res = requests.get(url + "?d=" + date, headers=headers)
if res.status_code == 200:
return True if res.text == '1' else False
else:
return False
# 测试代码
print(is_holiday('2021-10-01')) # True
print(is_holiday('2021-10-04')) # False
print(is_holiday('2021-10-09')) # True
```
## 方法二:使用本地数据
如果不想调用 API,也可以使用本地数据来判断日期是否为节假日或者休息日。
使用方法如下:
1. 获取节假日和休息日的数据,可以从官方网站或其他可信渠道下载;
2. 将数据保存到本地,例如保存到一个 JSON 文件中;
3. 在代码中读取 JSON 文件,判断日期是否为节假日或者休息日。
示例代码如下:
```python
import json
def is_holiday(date):
"""
判断日期是否为节假日
:param date: 日期,格式为 'YYYY-MM-DD'
:return: True 或者 False
"""
with open('holiday_data.json', 'r') as f:
data = json.load(f)
if date in data['holiday']:
return True
if date in data['workday']:
return False
week_day = datetime.datetime.strptime(date, '%Y-%m-%d').weekday()
if week_day >= 5:
return True
return False
# 测试代码
print(is_holiday('2021-10-01')) # True
print(is_holiday('2021-10-04')) # False
print(is_holiday('2021-10-09')) # True
```
在代码中,我们使用了 `json` 库来读取 JSON 文件中的数据。然后,我们定义了一个 `is_holiday` 函数,用来判断输入的日期是否为节假日或者工作日。在测试代码中,我们输入了三个日期进行测试,输出结果与预期一致。
阅读全文