python--datetime(timedelta类)

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」前一段获取页面的实时时间,页面的时间是CT时间,我们需要验证的确实实际的北京时间,这里面就有一个时间换算, datetime 模块就解决了这个问题

基础

遇到不熟悉的内容,我喜欢自己看官方文档和源码实现,看别人写的源码,对自己的编码能力很有帮助,有时候不会就是看的太少,这是官方文档链接 docs.python.org/zh-cn/3/lib…

从官方文档可以知道,datetime模块和time模块一样都是处理日期和时间的类,在支持日期时间数学运算的同时,更关注如何能够有效地解析其属性用于格式化输出和数据操作。

timedelta类

主要总结一下timedelta的使用,先看源码

carbon.png

源码里大量用了python的typing, 想了解typing的可以参考我以前的文章 juejin.cn/post/700029…

这个类主要结合其他时间对象来进行时间的各种运算,它有days, seconds, mircroseconds,milliseconds等参数,默认这些参数的值是0, 我们可以任意给其中的一些或全部参数赋值为整数或者浮点数,也可以是正数或者负数,只会返回一个含有days, seconds, microseconds(微妙)的类对象,其他参数会根据一个标准转化 数单位的换算规则如下:

  • 1毫秒会转换成1000微秒。
  • 1分钟会转换成60秒。
  • 1小时会转换成3600秒。
  • 1星期会转换成7天。

举例

图片.png

应用

时区

结合到开头的那个例子,北京时间和CT时间的互相转换,北京时间和CT时间相差13个小时 那么我们可以给timedelta的参数hours赋值为负数13,得到一个时间差 具体例子

图片.png

扫描二维码关注公众号,回复: 13297260 查看本文章

对于转换时区的这个例子,还可以用astimezone,这个时候还需要额外的库pytz

图片.png

为当前时间加减

图片.png

总结

若是粗略估算程序的运行时间差,我们直接用datetime.datetime.now()方法获取程序运行前后的时间,再进行相减即可,若是对时间例如时区有些特殊的处理转换用timedelta比较好

猜你喜欢

转载自juejin.im/post/7033280209013080095