time模块
转换从epoch起经过的秒数(时间戳)
>>> import time
>>> d = time.strptime('2016-05-26', '%Y-%m-%d')
>>> time.mktime(d)
1464192000.0
时间字符串格式
>>>import time
>>> time.ctime()
'Sat Jan 27 14:24:42 2018'
datetime之datetime()、date()与time()
下面的datetime、date、默认是没有时区信息的,单纯用来表示一个日期或时间概念
datetime()、date()与time()会进行基本的范围判断,如果设置了不存在的日期,就会抛出ValueError异常
>>> import datetime
>>> d = datetime.date(2018, 1, 27)
>>> (d.year, d.month, d.day)
(2018, 1, 27)
>>> t = datetime.time(14, 31, 20)
>>> (t.hour, t.minute, t.second, t.microsecond)
(14, 31, 20, 0)
>>> dt = datetime.datetime(2018, 1, 27, 14, 31, 20)
>>> (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
(2018, 1, 27, 14, 31, 20)
使用当前的时间来创建datetime实例
>>> from datetime import datetime, date
>>> datetime.today()
datetime.datetime(2018, 1, 27, 14, 54, 7, 731603)
>>> date.today()
datetime.date(2018, 1, 27)
>>> datetime.now()
datetime.datetime(2018, 1, 27, 14, 55, 4, 731002)
>>> datetime.utcnow() 使用utc时间
datetime.datetime(2018, 1, 27, 6, 55, 55, 650442)
把datetime或date实例包含的时间概念转换为UTC时间戳
>>> import time
>>> from datetime import datetime
>>> from datetime import datetime
>>> now = datetime.now()
>>> st = now.timetuple()
>>> time.mktime(st)
1517036373.0
时间戳转换为datetime或date实例
>>> import time
>>> from datetime import datetime
>>> now = time.time()
>>> datetime.fromtimestamp(now)
datetime.datetime(2018, 1, 27, 15, 4, 7, 75697)
>>> date.fromtimestamp(now)
datetime.date(2018, 1, 27)
时间字符串描述
datetime、date、time实例都有个isoformat()方法,可以返回字符串描述。当日期与时间同时表示时,默认会使用T来分隔,如果有必要也可以自行指定
>>> from datetime i,port datetime, date
>>> datetime.now().isoformat()
'2018-01-27T15:23:35.597636'
>>> datetime.now().isoformat(' ')
'2018-01-27 15:24:02.551108'
>>> date.today().isoformat()
'2018-01-27'
解析字符串
>>> from datetime import datetime, date
>>> date.today().strftime('%d-%m-%Y')
'27-01-2018'
>>> datetime.strptime('2018-1-27', '%Y-%m-%d')
datetime.datetime(2018, 1, 27, 0, 0)
日期与时间的运算 timedelta()
timedelta可以创建的时间参数为参数有days,seconds,microseconds,milliseconds,minutes,hours,weeks
使用timedelta进行日期与时间运算会比较可靠,原因在于它可以处理像闰年之类的问题
若有个datetime 实例表示当前的时间,你想知道加上3周又5天8小时35分钟后的日期时间是什么,可以如下编写:
>>> from datetime import datetime, timedelta
>>> datetime.now() + timedelta(weeks=3, days=5, hours=8, minutes=35)
datetime.datetime(2018, 2, 23, 0, 9, 43, 29897)