[转载] python如何获取当前月份_Python-获取当前月的前x月月份日期

参考链接: 如何在Python中获取当前日期和时间

"""

 获取当前月的前x月月份日期

 """

 import datetime

 def getTheMonth(date, n):

 month = date.month

 year = date.year

 for i in range(n):

 if month == 1:

 year -= 1

 month = 12

 else:

 month -= 1

 return datetime.date(year, month, 1).strftime('%Y-%m')

 date = datetime.datetime.today()

 single_time_new = getTheMonth(date, 5)

 single_time_old = getTheMonth(date, 6)

 import datetime

 # 根据开始日期、结束日期返回这段时间里所有天的集合

 def getDatesByTimes(sDateStr, eDateStr):

 list = []

 datestart = datetime.datetime.strptime(sDateStr, '%Y-%m-%d')

 dateend = datetime.datetime.strptime(eDateStr, '%Y-%m-%d')

 list.append(datestart.strftime('%Y-%m-%d'))

 while datestart < dateend:

 datestart += datetime.timedelta(days=1)

 list.append(datestart.strftime('%Y-%m-%d'))

 return list

 #上一天的时间

 def getYesterday():

 yesterday = datetime.date.today() + datetime.timedelta(-2)

 return yesterday

 #现在时间

 def getnowYesterday():

 nowday = datetime.date.today() + datetime.timedelta(-1)

 return nowday

 #获取前1天或N天的日期,beforeOfDay=1:前1天;beforeOfDay=N:前N天

 def getdate(beforeOfDay):

 today = datetime.datetime.now()

 # 计算偏移量

 offset = datetime.timedelta(days=-beforeOfDay)

 # 获取想要的日期的时间

 re_date = (today + offset).strftime('%Y-%m-%d')

 return re_date

 #获取前一周的所有日期(weeks=1),获取前N周的所有日期(weeks=N)

 def getBeforeWeekDays(weeks=1):

 # 0,1,2,3,4,5,6,分别对应周一到周日

 weeks=1

 week = datetime.datetime.now().weekday()

 days_list = []

 start = 7 * weeks + week

 end = week

 for index in range(start, end, -1):

 day =getdate(index)

 days_list.append(day)

 return days_list

 #计算两个日期相差天数,自定义函数名,和两个日期的变量名。

 def Caltime(date1,date2):

 #%Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样;可以只计算日期,不计算时间。

 #date1=time.strptime(date1,"%Y-%m-%d %H:%M:%S")

 #date2=time.strptime(date2,"%Y-%m-%d %H:%M:%S")

 date1=time.strptime(date1,"%Y/%m/%d")

 date2=time.strptime(date2,"%Y/%m/%d")

 #根据上面需要计算日期还是日期时间,来确定需要几个数组段。下标0表示年,小标1表示月,依次类推...

 #date1=datetime.datetime(date1[0],date1[1],date1[2],date1[3],date1[4],date1[5])

 #date2=datetime.datetime(date2[0],date2[1],date2[2],date2[3],date2[4],date2[5])

 date1=datetime.datetime(date1[0],date1[1],date1[2])

 date2=datetime.datetime(date2[0],date2[1],date2[2])

 #返回两个变量相差的值,就是相差天数

 print((date2-date1).days)#将天数转成int型

 return(date2-date1)

 from datetime import timedelta

 import datetime

 import calendar

 def gen_dates(b_date, days):

 day = timedelta(days=1)

 for i in range(days):

 yield b_date + day*i

 def get_date_list(start_date, end_date):

 if start_date is not None:

 start = datetime.datetime.strptime(start_date, "%Y-%m-%d")

 if end_date is None:

 end = datetime.datetime.now()

 else:

 end = datetime.datetime.strptime(end_date, "%Y-%m-%d")

 data = []

 for d in gen_dates(start, ((end-start).days + 1)): # 29 + 1

 data.append(d.strftime("%Y-%m-%d"))

 return data

 def getMonthFirstDayAndLastDay(year=None, month=None):

 if year:

 year = int(year)

 else:

 year = datetime.date.today().year

 if month:

 month = int(month)

 else:

 month = datetime.date.today().month

 # 获取当月第一天的星期和当月的总天数

 firstDayWeekDay, monthRange = calendar.monthrange(year, month)

 # 获取当月的第一天

 firstDay = datetime.date(year=year, month=month, day=1)

 firstDay = firstDay.strftime('%Y-%m-%d')

 lastDay = datetime.date(year=year, month=month, day=monthRange)

 lastDay = lastDay.strftime('%Y-%m-%d')

 return firstDay,lastDay

 def first_last(time):

 year = time[:4]

 month = time[4:6]

 firstday = getMonthFirstDayAndLastDay(year, month)[0]

 lastday = getMonthFirstDayAndLastDay(year, month)[1]

 return get_date_list(firstday,lastday)

 def main():

 time="202002"

 print(first_last(time))

 本文地址:https://blog.csdn.net/qq_39142369/article/details/110874495

 如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值