用到的库:datetime.datetime.now() datetime.datetime.strptime() datetime.timedelta()
数据模拟:
>>> from datetime import datetime, timedelta
>>> nowtime = datetime.now() # 现在的时间
>>> nowtime
datetime.datetime(2017, 6, 20, 20, 11, 12, 926763)
>>>
>>> lasthour = datetime(2017, 6, 20, 19, 11, 12, 926763) # 1个小时前的时间
>>> lasthour
datetime.datetime(2017, 6, 20, 19, 11, 12, 926763)
>>> lasthour_str = str(lasthour) # 模拟从数据库取出来的str类型时间数据
>>> lasthour_str
'2017-06-20 19:11:12.926763'
str时间数据转换:
# 将str类型时间数据转换为datetime.datetime类型时间数据
>>> lasthour_new = datetime.strptime(lasthour_str, '%Y-%m-%d %H:%M:%S.%f')
>>> lasthour_new
datetime.datetime(2017, 6, 20, 19, 11, 12, 926763)
时间比较:
# lasthour_new和nowtime的时间差是否大于1个小时
>>> nowtime - lasthour_new > timedelta(hours=1)
False
# lasthour_new和nowtime的时间差是否等于1个小时
>>> nowtime - lasthour_new == timedelta(hours=1)
True
# lasthour_new和nowtime的时间差是否大于60分钟
>>> nowtime - lasthour_new > timedelta(minutes=60)
False
# lasthour_new和nowtime的时间差是否等于60分钟
>>> nowtime - lasthour_new == timedelta(minutes=60)
True
当前日期时间
import datetime
print datetime.datetime.now()
# 2018-05-08 16:53:30.101000
import datetime
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
# 2018-05-08 16:54
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-09 16:56:07
减一天
import datetime
print (datetime.datetime.now()+datetime.timedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S")
# 2018-05-07 16:56:59
可以把days改为hours minutes,就可以提前XX小时/分钟了。
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[,
hours[, weeks]]]]]]])
减去一年
import datetime
from dateutil.relativedelta import relativedelta
d = datetime.datetime.strptime('20180131', '%Y%m%d')
print(d) // 2018-01-31 00:00:00