日期获取
1.获取时间段内的所有日期
def dateRange(beginDate, endDate): dates = [] dt = datetime.datetime.strptime(beginDate, "%Y-%m-%d") date = beginDate[:] while date <= endDate: dates.append(date) dt = dt + datetime.timedelta(1) date = dt.strftime("%Y-%m-%d") return dates beginDate = "2020-02-01" endDate = "2020-02-29" dateRange(beginDate, endDate)
2.获取上月周五所有日期
def get_last_month_one_weekday(date, day_of_week): last_month_thus = [] date = datetime.datetime.strptime(date, "%Y-%m-%d") year = int(date.strftime("%Y")) now_month = int(date.strftime("%m")) if now_month == 1: last_month = 12 year -= 1 else: last_month = now_month - 1 last_month_last_day = calendar.monthrange(year, last_month)[1] print(last_month_last_day) for i in range(1, 8): iday = datetime.datetime.strptime( (str(year) + "-" + str(last_month) + "-" + str(i)), '%Y-%m-%d') if iday.weekday() == day_of_week: # 0-6,周一到周末,可根据需要自行调整 first_weekday = int(iday.strftime("%d")) last_month_thus.append(iday.strftime("%Y-%m-%d")) break while first_weekday <= last_month_last_day - 7: first_weekday += 7 last_month_thus.append(datetime.datetime.strptime( (str(year) + "-" + str(last_month) + "-" + str(first_weekday)), '%Y-%m-%d').strftime("%Y-%m-%d")) return last_month_thus date = "2020-03-19" get_last_month_one_weekday(date,6)
3.获取上周五日期
def last_friday_date(date): date = datetime.datetime.strptime(date, "%Y-%m-%d") last_friday = date - datetime.timedelta(days=date.weekday() + 3) last_friday = last_friday.strftime("%Y-%m-%d") return last_friday date = "2020-02-19" last_friday_date(date)
4.获取上上周五日期
def getfilname(date): date = datetime.datetime.strptime(date, "%Y-%m-%d") l_last_friday = date - datetime.timedelta(days=date.weekday() + 10) l_last_friday = l_last_friday.strftime("%Y-%m-%d") return l_last_friday date = "2020-03-19" getfilname(date)
5.本周一 到 现在的日期
def this_week(date): now = datetime.datetime.strptime(date, "%Y-%m-%d") day = now.weekday() li_time = [] num = 0 while day >= num: week = now + datetime.timedelta(days=num - now.weekday()) week2 = datetime.datetime.strftime(week, "%Y-%m-%d") li_time.append(week2) num = num + 1 return li_time date = "2020-03-19" this_week(date)
6.上周一到上周五日期
def last_week(date): date = datetime.datetime.strptime(date, "%Y-%m-%d") last_week_1 = (date - datetime.timedelta(days=date.weekday() + 7)).strftime("%Y-%m-%d") last_week_2 = (date - datetime.timedelta(days=date.weekday() + 6)).strftime("%Y-%m-%d") last_week_3 = (date - datetime.timedelta(days=date.weekday() + 5)).strftime("%Y-%m-%d") last_week_4 = (date - datetime.timedelta(days=date.weekday() + 4)).strftime("%Y-%m-%d") last_week_5 = (date - datetime.timedelta(days=date.weekday() + 3)).strftime("%Y-%m-%d") last_week_list = [last_week_1, last_week_2, last_week_3, last_week_4, last_week_5] return last_week_list date = "2020-03-19" last_week(date)
7.判断是否是闰年
from calendar import isleap
def how_many_days(date): patt = '(\d+)-(\d+)-(\d+)' # 取年份,变成int类型 date = int(re.search(patt, date).group(1)) if isleap(date) == True: print("%s是闰年!" % (date,)) return 366 else: print("%s不是闰年!" % (date,)) return 365 date = "2020-03-19" how_many_days(date)
8.与当前日期相差几个月
import datetime def str2datetime(dic): # 获取当前时间 str year = datetime.datetime.now().strftime('%Y-%m-%d') # str--->datetime.datetime year2 = datetime.datetime.strptime(year, "%Y-%m-%d") dic_date_cha = {} for k_name, date in dic.items(): date = datetime.datetime.strptime(date, "%Y-%m-%d") # 获取日期直接的差 date_cha = (year2 - date).days # 变成月差,余数1位 # date_cha = round(date_cha / 30, 1) date_cha = date_cha / 30 dic_date_cha[k_name] = date_cha return dic_date_cha dic = { "A":"2020-01-01", "B":"2020-01-02", "C":"2020-01-03", "D":"2020-02-05", "E":"2020-03-06", "F":"2020-04-03", "G":"2020-05-07", "H":"2020-06-23", "I":"2020-07-30", "J":"2020-08-09", "K":"2020-09-02", "L":"2020-10-03", "M":"2020-11-03", } ret = str2datetime(dic) print(ret) ### {'A': 2.6, 'B': 2.566666666666667, 'C': 2.533333333333333, 'D': 1.4333333333333333, 'E': 0.43333333333333335, 'F': -0.5, 'G': -1.6333333333333333, 'H': -3.2, 'I': -4.433333333333334, 'J': -4.766666666666667, 'K': -5.566666666666666, 'L': -6.6, 'M': -7.633333333333334} #### 执行的日期是 2020-03-19