这个版块很重要,但是每次都记不住,主要从类库分别记录
datetime
类库
构造时间数据对象
直接构建
datetime.date(2019,8,26)
获取今天的时间
datetime.date.today()
取指定时间部分
a = datetime.date.today() a.year # 年 a.month # 月 a.day # 日
str
格式转换
将str
格式转为时间,随即可以进行仅时间格式可进行的操作
str
转时间datetime.strptime(str,'%H:%M:%S.%f') datetime.strptime(str,'%Y-%m-%d')
时间转
str
datetime.strftime(str,'%H:%M:%S.%f')
时间间隔timedelta
两时间加减
a1 = datetime.date(2019,8,26) a2 = datetime.date(2019,9,26) (a2 - a1).days # <- datetime.timedelta(31) (a1 - a2).days # <- 31
.seconds
表示将此间隔转为秒为单位
处理间隔
a1 = datetime.date(2019,8,26) delta = datetime.timedelta(days=10) a1 + delta # <- datetime.date(2019, 9, 5) (a1 + delta).isoformat() # <- '2019-09-05' (a1 + delta).strftime('%Y-%m-%d') # <- '2019-09-05'
生成等间距时间序列
pd.date_range(start=self.beginDate, end=self.endDate, freq='Q').strftime('%Y%m%d').tolist()
显然其中freq
参数控制间隔为季度
pandas
中的时间处理
to_datetime
:str
转时间戳
将某列数据,进行格式化,转换为时间格式
pd.to_datetime('20221101',format='%Y%m%d') # <- Timestamp('2022-11-01 00:00:00')
pd.to_datetime(20221101,format='%Y%m%d') # <- Timestamp('2022-11-01 00:00:00')
pd.to_datetime('2022-11-1',format='%Y-%m-%d') # <- Timestamp('2022-11-01 00:00:00')
pandas.tseries.offsets
:跳转
这部分主要是基于时间戳,获取符合条件的时间,举例说明
转至月末
pd.Timestamp('2017-01-01 09:10:11') + pd.tseries.offsets.MonthEnd(1)
前五年的今天
pd.to_datetime('2022-11-1') - pd.DateOffset(years=5) # <-Timestamp('2017-11-01 00:00:00')
pandas.Series.dt
:批量操作
对pandas.Series
中的每一个时间戳对象,进行批量操作,类似于apply
AnalystConsData['writeDate_shift1D'].dt.strftime('%Y-%m-%d') # 时间戳批量转回str
Datetime format specification