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每日一练

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值