Python每日一练0020

问题

你需要执行简单的日期操作,计算两个日期间隔多少天、某个日期后的多少天是几月几日、转换时间字符串的格式等

解决方案

使用datetime库中的datetimetimedelta

其中datetime类代表一个日期 + 时间,例如2018年4月16日11点00分00秒;timedelta类代表一个日期间隔

对于datetime实例,可以直接进行-数学运算得到一个timedelta实例,也就是两个日期时间的间隔,比如计算两个日期之间有多少天

>>> import datetime
>>> a = datetime.datetime(year=2018, month=4, day=16)
>>> b = datetime.datetime(year=2018, month=3, day=5)
>>> delta = a - b
>>> delta.days
42
>>> print(delta)
42 days, 0:00:00

所以我们也可以让一个datetime实例加上一个timedelta实例,得到一个新的datetime实例,比如说我想计算从今天开始往后20天是几月几日

>>> start = datetime.datetime.now()
>>> print(start)
2018-04-16 11:12:50.846262
>>> delta = datetime.timedelta(days=20)
>>> end = start + delta
>>> print(end)
2018-05-06 11:12:50.846262

并且datetime类还提供了strftimestrptime进行字符串和日期时间之间的转换操作

我们可以使用strftime将一个datetime实例转换为字符串,也可以用strptime将一个字符串转换为datetime实例,并且自己控制格式

>>> dt = datetime.datetime.now()
>>> s = datetime.datetime.strftime(dt, '%Y-%m-%d %X')
>>> s
'2018-04-16 11:21:01'
>>> dt2 = datetime.datetime.strptime(s, '%Y-%m-%d %X')
>>> dt2
datetime.datetime(2018, 4, 16, 11, 21, 1)

讨论

使用datetimetimedelta可以对日期时间很方便的操作,除了上面介绍的,还比如将一个列表中某个时间段的数据取出来、对数据库中select出来的日期时间进行操作、或者对日期字符串进行重新格式化等等

除了datetimetimedelta类外,datetime模块还支持datetime等类,如果只需要表示日期(X年X月X日),可以只使用date类,如果只需要表示时间(X时X分X秒),可以使用time

关于strftimestrptime的占位符(%Y %m %d这种)见:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

关于datetime更详细的文档见:https://docs.python.org/3/library/datetime.html#module-datetime

来源

Segment Fault

关注

欢迎关注我的微信公众号:python每日一练

你可能感兴趣的:(python每日一练)