自己封装了关于日期的两个函数,供需要时候使用
获取时间与当前日期比较
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
""" @author: kyle @time: 2020/6/29 14:46 """
import datetime
def diff_date(t_date): """ 和当前日期比较 :param t_date: 待比较日期 :return: """ tmp_today = datetime.datetime.today() today = tmp_today.date()
tmp_date_reg = datetime.datetime.strptime(t_date, '%Y-%m-%d').date()
result = (tmp_date_reg - today).days
if result > 0: return t_date + " 在未来" elif result == 0: return t_date + " 是今天" else: return t_date + " 在过去"
if __name__ == '__main__': print(diff_date('2020-07-01'))
|
获取一段时间内所有节假日
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
""" @author: kyle @time: 2020/6/4 11:05 """
import datetime import chinese_calendar
def reg_date(t_date): """ 格式化日期 :param t_date: :return: """ return datetime.datetime.strptime(t_date, '%Y-%m-%d')
def get_holiday(start, end): """ 返回指定时间区间内的节假日 :param start: :param end: :return: """ return chinese_calendar.get_holidays(reg_date(start), reg_date(end))
def get_holiday_no_weekends(start, end): """ 返回指定时间区间内的节假日,不含周末 :param start: :param end: :return: """ return chinese_calendar.get_holidays(reg_date(start), reg_date(end), include_weekends=False)
def get_workday(start, end): """ 返回指定时间区间内的工作日 :param start: :param end: :return: """ return chinese_calendar.get_workdays(reg_date(start), reg_date(end))
def judge_date(t_date): """ 判断某个日期属于节假日还是工作日 :param t_date: :return: """ t_year = reg_date(t_date).year
holidays = get_holiday('{}-01-01'.format(t_year), '{}-12-31'.format(t_year))
if datetime.date(reg_date(t_date).year, reg_date(t_date).month, reg_date(t_date).day) in holidays: return str(t_date) + " 是节假日" else: return str(t_date) + " 是工作日"
if __name__ == '__main__': print(judge_date('2020-06-28'))
|
获取指定区间内的所有日期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| from datetime import datetime, timedelta
def reg_date(t_date): """ 格式化日期 :param t_date: :return: """ return datetime.strptime(t_date, '%Y-%m-%d')
def get_daterange(start, end): start = reg_date(start) end = reg_date(end)
delta = (end - start).days res_date = [(start + timedelta(days=deltaday)).date() for deltaday in range(delta+1)] return [date.strftime('%Y-%m-%d') for date in res_date]
if __name__ == '__main__': print(get_daterange('2020-05-01', '2020-06-02')) dateTime = datetime.today().date() print(dateTime.isoformat())
|
datetime格式转str
1 2 3 4 5 6 7 8 9
| from datetime import datetime
dateTime = datetime.today().date() r_date = dateTime.isoformat() print(dateTime) print(r_date)
print(type(dateTime)) print(type(r_date))
|
datetime.strftime
1 2 3 4 5 6 7 8 9
| from datetime import datetime
dateTime = datetime.today().date() r_date = dateTime.strftime('%Y-%m-%d') print(dateTime) print(r_date)
print(type(dateTime)) print(type(r_date))
|