python处理时间与日期

时间:2022-10-20 22:06:13

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)