概述
参数:年份,跳跃月数,
如果获取每个季度,step=3;半年,step=6
返回:起始和结束
import datetime
import calendar
def year_by_step(year,step):
start = str(year) + "0101"
jump = int(step)
try:
datetime.datetime.strptime(start,"%Y%m%d")
except Exception as result:
raise Exception("参数格式必须是yyyy如:1999,%s" % result)
result = []
for i in range(1,13,jump):
if i+jump-1 > 12:
break;
month_start,month_end = ("%02d" % int(i),"%02d" % int(i-1+jump))
range_day = calendar.monthrange(int(year),int(month_end))[1]
m_start = str(year)+month_start+"01"
m_end = str(year)+month_end+str(range_day)
result.append((m_start,m_end))
return result
测试:
print(year_by_step(2019,3))
结果:
[('20190101', '20190331'), ('20190401', '20190630'), ('20190701', '20190930'), ('20191001', '20191231')]
其他方法,见方法上方注释
import urllib.parse
import datetime
import calendar
import requests
import json
import pandas
# 输入一个时间,返回该时间的月末,ds=java:yyyyMMdd,Python:%Y%m%d
def month_end_day(ds):
try:
datetime.datetime.strptime(ds,"%Y%m%d")
except Exception as result:
raise Exception("参数格式必须是yyyyMMdd如:19991010,%s" % result)
year = ds[0:4]
month = ds[4:6]
range_day = calendar.monthrange(int(year),int(month))[1]
return ds[0:6]+str(range_day)
# 获取输入日期的前一天
def yesterday(ds=datetime.datetime.now().strftime("%Y%m%d")):
try:
datetime.datetime.strptime(ds,"%Y%m%d")
except Exception as result:
raise Exception("参数格式必须是yyyyMMdd如:19991010")
return (datetime.datetime.strptime(ds,"%Y%m%d") - datetime.timedelta(days = 1)).strftime("%Y%m%d")
# 输入起始时间,结束时间,获取该时间段的每天列表
def get_days(start,end=datetime.datetime.now().strftime('%Y-%m-%d')):
date_index = pandas.date_range(start,end)
date_list = [pandas.Timestamp(x).strftime("%Y%m%d") for x in date_index]
return date_list
# url加解密
def quote(url):
return urllib.parse.quote(url)
def unquote(url):
return urllib.parse.unquote(url)
最后
以上就是务实钢铁侠为你收集整理的python获取每年的季度,月份的全部内容,希望文章能够帮你解决python获取每年的季度,月份所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复