问题
你需要执行简单的日期操作,计算两个日期间隔多少天、某个日期后的多少天是几月几日、转换时间字符串的格式等
解决方案
使用datetime
库中的datetime
和timedelta
类
其中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类
还提供了strftime
和strptime
进行字符串和日期时间之间的转换操作
我们可以使用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)
讨论
使用datetime
和timedelta
可以对日期时间很方便的操作,除了上面介绍的,还比如将一个列表中某个时间段的数据取出来、对数据库中select出来的日期时间进行操作、或者对日期字符串进行重新格式化等等
除了datetime
和timedelta
类外,datetime
模块还支持date
、time
等类,如果只需要表示日期(X年X月X日),可以只使用date
类,如果只需要表示时间(X时X分X秒),可以使用time
类
关于strftime
和strptime
的占位符(%Y %m %d这种)见:https://docs.python.org/3/lib...
关于datetime
更详细的文档见:https://docs.python.org/3/lib...
来源
Segment Fault
关注
欢迎关注我的微信公众号:python每日一练
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。