python 获取当前日期并判断是否是工作日_通过Python获得相关日期的最近工作日...

因为工作业务需要,需要判断得到的日期是否是节假日(包括周末),并返回最近的工作日(如果获得的日期就是工作日,则返回该日期本身)

自己实现其实很麻烦,我是通过workalendar这个第三方组件包实现的。

首先下载安装:

pip install workalendar

2018-08-02 14_30_46-cmd (Admin).png

2018-08-02 14_34_20-GitHub - peopledoc_workalendar_ Worldwide holidays and workdays computational to.png

如果需要实现该功能非常简单:

from workalendar.usa import core

def getworkday(day):

cal = core.UnitedStates()

return cal.find_following_working_day(day)

判断是否是节假日的实现方式:

from workalendar.usa import core

cal = core.UnitedStates()

cal.is_holiday(day)

获得2018年美国所有节日:

from workalendar.usa import core

cal = core.UnitedStates()

print(cal.holidays(2018))

以下是结果:

[(datetime.date(2019, 1, 1), 'New year'),

(datetime.date(2019, 1, 21), 'Birthday of Martin Luther King, Jr.'),

(datetime.date(2019, 2, 18), "Washington's Birthday"),

(datetime.date(2019, 5, 27), 'Memorial Day'),

(datetime.date(2019, 7, 4), 'Independence Day'),

(datetime.date(2019, 9, 2), 'Labor Day'),

(datetime.date(2019, 10, 14), 'Columbus Day'),

(datetime.date(2019, 11, 11), 'Veterans Day'),

(datetime.date(2019, 11, 28), 'Thanksgiving Day'),

(datetime.date(2019, 12, 25), 'Christmas Day')]

获得香港2018年所有节日

from workalendar.asia import hong_kong

cal = hong_kong.HongKong()

print(cal.holidays(2018))

以下是结果:

[(datetime.date(2018, 1, 1), 'New year'),

(datetime.date(2018, 2, 16), "Chinese Lunar New Year's Day"),

(datetime.date(2018, 2, 17), 'Second day of Chinese Lunar New Year'),

(datetime.date(2018, 2, 18), 'Third day of Chinese Lunar New Year'),

(datetime.date(2018, 2, 19), 'Third day of Chinese Lunar New Year shift'),

(datetime.date(2018, 3, 30), 'Good Friday'),

(datetime.date(2018, 3, 31), 'Easter Saturday'),

(datetime.date(2018, 4, 2), 'Easter Monday'),

(datetime.date(2018, 4, 5), 'Ching Ming Festival'),

(datetime.date(2018, 5, 1), 'Labour Day'),

(datetime.date(2018, 5, 22), "Buddha's Birthday"),

(datetime.date(2018, 6, 18), 'Tuen Ng Festival'),

(datetime.date(2018, 7, 1), 'SAR Establishment Day'),

(datetime.date(2018, 7, 2), 'SAR Establishment Day shift'),

(datetime.date(2018, 9, 25), 'Day After Mid-Autumn Festival'),

(datetime.date(2018, 10, 1), 'National Day'),

(datetime.date(2018, 10, 17), 'Chung Yeung Festival'),

(datetime.date(2018, 12, 25), 'Christmas Day'),

(datetime.date(2018, 12, 26), 'Boxing Day')]

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值