PythonNote008---时间处理

网友投稿 190 2022-11-15

PythonNote008---时间处理

常用的时间、日期处理

生成间隔时序list

备用

import datetimedef dateRange(start, end, step=1, inputFormat="%Y-%m-%d", outputFormat="%Y%m%d"): """ startDate:开始时间,字符串类型,默认yyyy-MM-dd endDate:结束时间,字符串类型,默认yyyy-MM-dd format:返回的日期字符串格式,可以指定 """ # strptime字符串转时间 # strftime时间转字符串 strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime days = (strptime(end, inputFormat) - strptime(start, inputFormat)).days return [strftime(strptime(start, inputFormat) + datetime.timedelta(i), outputFormat) for i in range(0, days + 1, step)]

dateRange(start="2020-01-01",end="2020-01-21",step=3)

['20200101', '20200104', '20200107', '20200110', '20200113', '20200116', '20200119']

上面的函数是第一个版本,只提供间隔为天的序列生成函数

通用函数封装

import pandas as pddef timeRange(starttime, endtime, step="15Min", inputFormat='%Y%m%d%H%M', outputFormat='%Y%m%d%H%M'): """ 输入起止时间,返回指定间隔的时间序列 :param starttime: 开始时刻 :param endtime: 截止时刻 :param step: 步长,pands的参数,"Y"-年,"M"-月,"D"-天,"H"-小时,"Min"-分钟 :param inputFormat:输入时间格式 :param outputFormat: 输出时间格式 :return: """ strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime # 转换数据类型 start_slice_p = strptime(starttime, inputFormat) end_slice_p = strptime(endtime, inputFormat) # 使用pandas提供的date_range函数生成间隔序列,并且转换成指定输出格式 return [x.strftime(outputFormat) for x in pd.date_range(start_slice_p, end_slice_p, freq=step)]

年间隔

timeRange("202001010000", "202501010000", step="1Y")

['202012310000', '202112310000', '202212310000', '202312310000', '202412310000']

月间隔

timeRange(starttime="2020-01-01 00:00:15", endtime="2020-05-01 00:00:15", step="1M", inputFormat='%Y-%m-%d %H:%M:%S', outputFormat='%Y-%m-%d %H:%M:%S')

['2020-01-31 00:00:15', '2020-02-29 00:00:15', '2020-03-31 00:00:15', '2020-04-30 00:00:15']

小时间隔

timeRange(starttime="2020-01-01 00:00:15", endtime="2020-01-01 12:00:15", step="1H", inputFormat='%Y-%m-%d %H:%M:%S', outputFormat='%Y-%m-%d %H:%M:%S')

['2020-01-01 00:00:15', '2020-01-01 01:00:15', '2020-01-01 02:00:15', '2020-01-01 03:00:15', '2020-01-01 04:00:15', '2020-01-01 05:00:15', '2020-01-01 06:00:15', '2020-01-01 07:00:15', '2020-01-01 08:00:15', '2020-01-01 09:00:15', '2020-01-01 10:00:15', '2020-01-01 11:00:15', '2020-01-01 12:00:15']

分钟间隔

timeRange(starttime="2020-01-01 09:15:15", endtime="2020-01-01 11:15:14", step="15Min", inputFormat='%Y-%m-%d %H:%M:%S', outputFormat='%Y-%m-%d %H:%M:%S')

['2020-01-01 09:15:15', '2020-01-01 09:30:15', '2020-01-01 09:45:15', '2020-01-01 10:00:15', '2020-01-01 10:15:15', '2020-01-01 10:30:15', '2020-01-01 10:45:15', '2020-01-01 11:00:15']

秒间隔

timeRange(starttime="2020-01-01 09:15:15", endtime="2020-01-01 09:18:14", step="30S", inputFormat='%Y-%m-%d %H:%M:%S', outputFormat='%Y-%m-%d %H:%M:%S')

['2020-01-01 09:15:15', '2020-01-01 09:15:45', '2020-01-01 09:16:15', '2020-01-01 09:16:45', '2020-01-01 09:17:15', '2020-01-01 09:17:45']

基本调用逻辑都是一样的,如果需要对函数做修改,可以参看​​pd.date_range​​的help

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis Generator生成的$ sql是否存在注入风险详解
下一篇:相比传统机械硬盘以及SSD+HDD双硬盘,正在发展的全固态存储有着诸多的好处
相关文章

 发表评论

暂时没有评论,来抢沙发吧~