python标准库的关于时间的库主要有3个
datetime,time,calendar
python时间序列有三类:
1、时间戳 timestamp ,特定的时间
2、固定时期 period 就是一个时间段,如:2001年1月或 2011年全年
3、时间间隔 interval ,由起始时间戳和结束时间戳表示,时期可以看看做是时间间隔的特例。
日期和时间数据类型及工具:
datetime类主要有如下类:
date:以公历的形式存储日历日期(年、月、日)
datetime:存储时间和日期
time:将时间存储为时、分、秒、毫秒
timedelta:表示两个datetime值之间的时间差值(日、秒、毫秒)
In [34]: from datetime import datetime
In [35]: now = datetime.now()
Out[35]: datetime.datetime(2020, 3, 15, 12, 27, 34, 127223)
datetime的对象有year,month,day,hour,minute,second等属性,用户获取datetime对象的年,月,日,时,分,秒
datetime库中的timedelta对象为两个datetime对象之间的时间差。
datetime库中的datetime类的now()方法,返回当前时间的datetime对象,
delta = datetime.datetime(2011,11,20)-datetime.datetime(2011,11,1)
timedelta对象的计算:
import datetime
In [19]: start = datetime.datetime(2011,1,7)
In [20]: start+datetime.timedelta(12)
Out[20]: datetime.datetime(2011, 1, 19, 0, 0)
In [21]: start + 2*datetime.timedelta(10)
Out[21]: datetime.datetime(2011, 1, 27, 0, 0)
字符串和datetime对象之间的互相转换:
In [23]: stamp = datetime.datetime(2011,1,3)
In [24]: str(stamp) #直接将datetime对象转换为
Out[24]: '2011-01-03 00:00:00'
In [25]: stamp.strftime('%Y-%m-%d')#按照特定格式转换
Out[25]: '2011-01-03'
datetime对象的strptime()将指定格式的str对象转化为datetime对象
In [26]: s = stamp.strftime('%Y-%m-%d')
In [27]: datetime.datetime.strptime(s,'%Y-%m-%d')
Out[27]: datetime.datetime(2011, 1, 3, 0, 0)
datetime格式定义如下:
%Y | 4位数的年 |
%y | 2位数的年 |
%m | 2位数的月【01-12】 |
%d | 2位数的日【01-31】 |
%H | 时,24小时制【1-23】 |
%I | 时,12小时制【1-12】 |
%M | 2位数的分【00,59】 |
%S | 秒【00,59】 |
dateutil库是一个将常见字符串转换为datetime对象的第三方库:
In [33]: from dateutil.parser import parse
In [34]: parse('2011-01-11')
Out[34]: datetime.datetime(2011, 1, 11, 0, 0)
In [35]: parse('20110105')
Out[35]: datetime.datetime(2011, 1, 5, 0, 0)
默认情况下时年/日/月格式,若存在年/月/日格式,可在parse方法的第二个参数使用dayfirst=True指定日在月前。
In [37]: parse('2011/01/02')
Out[37]: datetime.datetime(2011, 1, 2, 0, 0)
In [38]: parse('2011/01/02',dayfirst = True)
Out[38]: datetime.datetime(2011, 2, 1, 0, 0)
pandas有个一to_datetime()方法,可以将其他对象转化为DatetimeIndex对象
import pandas as pd
In [40]: pd.to_datetime(['2011/01/13','2011/01/01'])
Out[40]: DatetimeIndex(['2011-01-13', '2011-01-01'], dtype='datetime64[ns]', freq=None)