一、代码
import datetime
import calendar
from chinese_calendar import is_workday
import pandas as pd
# 判断是否为星期1
def is_monday():
today = datetime.datetime.now().weekday()
if today == 0:
return True
# 判断是否为星期2
def is_tuesday():
today = datetime.datetime.now().weekday()
if today == 1:
return True
# 判断是否为星期3
def is_wednesday():
today = datetime.datetime.now().weekday()
if today == 2:
return True
# 判断是否为星期4
def is_thursday():
today = datetime.datetime.now().weekday()
if today == 3:
return True
# 判断是否为星期5
def is_friday():
today = datetime.datetime.now().weekday()
if today == 4:
return True
# 判断是否为星期6
def is_saturday():
today = datetime.datetime.now().weekday()
if today == 5:
return True
# 判断是否为星期日
def is_sunday():
today = datetime.datetime.now().weekday()
if today == 6:
return True
# 判断上几工作日
def is_word_day(date_num):
day = datetime.datetime.now() + datetime.timedelta(days=date_num)
res = is_workday(day)
if res:
return day.strftime("%Y-%m-%d")
else:
date_num += 1
is_word_day(date_num)
# 上一自然日
def up_day():
return (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")
# 获取指定前后天
def get_day(date_num):
day = datetime.datetime.now() + datetime.timedelta(days=date_num)
return day.day
# excel中5位日期数字的转换
def turn_time(delta_days):
"""
delta_days:就是那个五位数
"""
# 上一步得到的就是一个pandas的时间戳形式,然后我们转换成合适的时间格式就好了
# Timestamp('1899-12-30 00:00:00')
real_time = pd.to_datetime('1899-12-30') + pd.Timedelta(str(delta_days) + 'D') # eg:'44701D'
return real_time.strftime("%Y/%m/%d")
# 获取上个月末
def before_month_last_day():
today = datetime.datetime.now()
first = datetime.date(day=1, month=today.month, year=today.year)
last_day = first - datetime.timedelta(days=1)
return last_day.strftime("%Y%m%d")
# 获取上上工作日
def get_2up_work(up_date=1, is_work=0):
'''
:param up_date:可以用来调整上几个工作日
:param is_work:
:return:
'''
day = datetime.datetime.now() + datetime.timedelta(days=-up_date)
res = is_workday(day)
if res:
is_work += 1
up_date += 1
if is_work == 2:
return day.strftime("%Y%m%d")
return get_2up_work(up_date, is_work)
else:
up_date += 1
return get_2up_work(up_date, is_work)
# 获取上个月初
def before_month_fristday():
today = datetime.datetime.now()
first = datetime.date(day=1, month=today.month - 1, year=today.year)
return first.strftime("%Y%m%d")
# 获取上个星期几
def get_up_day(day=1):
'''
:param day: 获取上个星期几,1-7
:return:
'''
cal_dict = {1: calendar.MONDAY, 2: calendar.TUESDAY, 3: calendar.WEDNESDAY, 4: calendar.THURSDAY,
5: calendar.FRIDAY, 6: calendar.SATURDAY, 7: calendar.SUNDAY}
date = datetime.datetime.now()
oneday = datetime.timedelta(days=1)
while date.weekday() != cal_dict.get(day, calendar.MONDAY):
date -= oneday
return date.strftime("%Y%m%d")