来源《利用python进行数据分析》P47-49
datetime模块
python内置了datetime模块,提供了datetime、date和time类型
from datetime import datetime, date, time
datetime方法
datetime包含日期和时间,定义方法如下:
dt = datetime(2011, 10, 29, 20, 30, 21)
可以从datetime中直接获取日期、时间等信息
# 获取日
dt.day # 29
# 获取分钟
dt.minute # 30
# 获取日期
dt.date() # datetime.date(2011, 10, 29)
# 获取时间
dt.time() # datetime.time(20, 30, 21)
datetime与字符串转换
strftime方法可将datetime转换为字符串
dt.strftime('%m/%d/%Y %H:%M')
# '10/29/2011 20:30'
strptime函数可将字符串转换为datetime对象
datetime.strptime('20091031','%Y%m%d')
# datetime.datetime(2009, 10, 31, 0, 0)
下面是datetime格式化说明
类 型 | 描述 |
---|---|
%Y | 四位的年份 |
%y | 两位的年份 |
%m | 两位的月份[01,12] |
%d | 两位的天数值[01,31] |
%H | 24小时制[00,23] |
%I | 12小时制[01,12] |
%M | 两位的分钟值[00,59] |
%S | 秒值[00,61], 60、61用于区分闰秒 |
%w | 星期值[0-星期天,6] |
%U | 一年中第几个星期的值[00,53],星期天是每周第一天,第一个星期天前的一周是第0个星期 |
%W | 同上,星期一是每周第一天,第一个星期一前的一周是第0个星期 |
%F | %Y-%m-%d的简写,如2012-4-18 |
%D | %m/%d%y的简写,如04/18/12 |
datetime时间序列值的替换
在聚合或分组时间序列数据时,会常常用到替代datetime时间序列中的一些值,比如将分钟、秒替换为0
dt.replace(minute=0,second=0)
# datetime.datetim(2011, 10, 29, 20, 0)
由于datetime.datetime是不可变类型,以上方法都是产生新的对象。
时间间隔timedelta
两个不同的datetime对象相减会产生一个datetime.timedelta类型的对象
dt2 = datetime(2011, 11, 15, 22, 30)
delta = dt2 - dt
# delta = datetime.timedelta(17, 7179)
# 表示间隔17天又7179秒
将timedelta加到一个datetime上,将产生一个新的对象
dt + delta
# datetime.datetime(2011, 11, 15, 22, 30)