python标准库包含用于日期(date)和时间(time)数据的数据类型,而且还含有日历方面的功能。我们主要会用到datetime、time和calendar模块。datetime.datetime是用得最多的数据类型。
datetime模块中的数据类型
date 以公历形式储存日历日期(年、月、日)
time 将时间储存为时、分、秒、毫秒
datetime 储存日期和时间
timedelta 表示两个datetime值之间的差(日、秒、毫秒)
字符串和datetime之间的相互转换
1、利用strftime()方法(传入一个格式化字符串)将datetime对象转化成字符串
eg:
datetime_now = datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S') print datetime_now
#return Feb-26-2018 11:26:19
2、通过strptime()方法可将字符串转化成datetime对象
start_dt = "2015.2.19" end_dt = "2015.3.29" start = datetime.datetime.strptime(start_dt, '%Y.%m.%d') end = datetime.datetime.strptime(end_dt, '%Y.%m.%d') total_days = end - start print total_days.days
#return 38
每次都要编写时间格式定义很麻烦,尤其是对于那些常见的时间格式,这时我们可以使用第三方库deteutil中的parser.parse方法
from dateutil.parser import parse dt = parse('2018-2-26') print dt
#return 2018-02-26 00:00:00
在国际通用的格式中,日通常是放在月的前面的,传入dayfirst=True即可,但亲试了一下不加甚至是dayfirst=False都会输出正常的结果。
dt = parse('26/2/2018',dayfirst=True) print dt
#return 2018-02-26 00:00:00
在pandas中利用to_datetime方法可以将多种不同的时间格式转化成标准的时间格式,对于多个时间的列表可通过索引获取单个转化后的时间,对于None或者是空字符串等会表示为NaT(Not a Time)
import pandas as pd datestrs = ['26/2/2018','8/8/2008',None] dts = pd.to_datetime(datestrs) dt = pd.to_datetime('2018.2.28') print dt print dts
#return
2018-02-28 00:00:00 DatetimeIndex(['2018-02-26', '2008-08-08','NaT'], dtype='datetime64[ns]', freq=None)
datetime格式定义
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(0000-9999)
%m 月份(01-12)
%d 月内中的一天(01-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-61)(秒60和秒61用于闰秒)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%w 星期(0-6),星期天为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%F %Y-%m-%d简写形式,例如2018-02-26
%D %m/%d/%y简写形式,例如26/02/2018
%% %号本身