简单的运用
from datetime import datetime, timedelta
# 当前日期时间
now = datetime.today() #2018-10-11 23:11:22.501561
#now = datetime.now() #2018-10-11 23:11:22.501561
now_date = datetime.today().date() #2018-10-11
now_time = datetime.today().time() #23:10:37.383139
# 计算30天后的日期时间
deltatime = timedelta(days=30)
nowAfter30_datetime = (now + deltatime) #2018-11-10 23:12:02.101730
nowAfter30_date = (now + deltatime).date() #2018-11-10
# 转化为字符串-str
# str_nowAfter30 = nowAfter30_date.strftime('%Y-%m-%d %H:%M:%S') #2018-11-10 00:00:00 字符串
str_nowAfter30_ = datetime.strftime(nowAfter30_date,'%Y-%m-%d') #2018-11-10 00:00:00
#str-转为-datetime
datetime_nowAfter30 = datetime.strptime(str_nowAfter30_, '%Y-%m-%d') #<class 'datetime.datetime'> 2018-11-10 00:00:00
# 计算两个日期的时间间隔
time = (nowAfter30_datetime - now).days #30
# time = (nowAfter30_datetime - now) #30 days, 0:00:00
# 获得二个日期相差多少天
使用__sub__(...)和__rsub__(...)方法,其实二个方法差不太多,一个是正向操作,一个是反向操作:
方法名 方法说明 用法
__sub__(…) x - y x.__sub__(y)
__rsub__(…) y - x x.__rsub__(y)
示例如下:
>>> a
datetime.date(2017, 3, 22)
>>> b
datetime.date(2017, 3, 15)
>>> a.__sub__(b)
datetime.timedelta(7)
>>> a.__rsub__(b)
datetime.timedelta(-7)
# 计算结果的返回值类型为datetime.timedelta, 如果获得整数类型的结果则按下面的方法操作:
>>> a.__sub__(b).days
7
>>> a.__rsub__(b).days
-7
# 使用f-string格式化日期
>>> today = datetime(year=2017, month=1, day=27)
>>> f"{today:%B %d, %Y}" # using date format specifier
'January 27, 2017'
https://blog.youkuaiyun.com/p9bl5bxp/article/details/54945920