Python标准库包含用于日期(date)和时间(time)数据的数据类型,而且还有日历方面的功能。主要会用到datetime、time以及 calendar模块。 datetime. datetime(也可以简写为 datetime)是用得最多的数据类型:
datetime以毫秒形式存储日期和时间。 datetime. timedelta表示两个 datetime对象之间的时间差。
代码演示如下:
from datetime import datetime
from datetime import timedelta
from dateutil.parser import parse
#获取当前时间
now = datetime.now()
now
#now打印结果显示:
datetime.datetime(2018, 6, 22, 9, 17, 45, 692092)
now.year,now.month,now.day
#打印结果显示:
(2018, 6, 22)
#时间日期类型的加减运算
deltatime = datetime(2011,1,7) - datetime(2008,6,24,8,15)
deltatime
#打印结果显示:
datetime.timedelta(926, 56700)
deltatime.days
#打印结果显示:
926
deltatime.seconds #15*3600+45*60=56700
打印结果显示:
56700
start = datetime(2011,1,7)
#timedelta指定时间差
start + timedelta(12)
#打印结果显示:
datetime.datetime(2011, 1, 19, 0, 0)
#一年之后
start + timedelta(365)
#打印结果显示:
datetime.datetime(2012, 1, 7, 0, 0)
start - 2*timedelta(12)
#打印结果显示:
datetime.datetime(2010, 12, 14, 0, 0)
#时间日期类型和字符串之间转换
stamp = datetime.now()
stamp
#打印结果显示:
datetime.datetime(2018, 6, 22, 9, 32, 0, 958513)
#最直接的转换方法
str(stamp)
#打印结果显示:
'2018-06-22 09:32:00.958513'
#将时间日期类型转换为指定的格式
stamp.strftime('%Y-%m-%d')
#打印结果显示:
'2018-06-22'
stamp.strftime('%Y/%m/%d')
#打印结果显示:
'2018/06/22'
stamp.strftime('%m-%d-%Y')
#打印结果显示:
'06-22-2018'
#将字符串转换成时间日期类型
dateStr = '2018-06-22'
myDate = datetime.strptime(dateStr,"%Y-%m-%d")
myDate
#打印结果显示:
datetime.datetime(2018, 6, 22, 0, 0)
dateStr = ["7/6/2011","8/6/2011"]
#通过列表推导式创建时间日期类型列表
result = [datetime.strptime(x,"%d/%m/%Y") for x in dateStr]
result
#打印结果显示:
[datetime.datetime(2011, 6, 7, 0, 0), datetime.datetime(2011, 6, 8, 0, 0)]
#使用parse模块直接将字符串转时间日期类型
parse("22/6/2018") #默认第一个是日期,第二个是月份
#打印结果显示:
datetime.datetime(2018, 6, 22, 0, 0)
#通过dayfirst参数指定第一数值是日期还是月份,true表示日期在月份前,false表示月份在日期前
parse("22/6/2018",dayfirst=True)
#打印结果显示:
datetime.datetime(2018, 6, 22, 0, 0)
parse("Jan 31 1997 10:45 PM")
#打印结果显示:
datetime.datetime(1997, 1, 31, 22, 45)