专栏名称: Python中文社区
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python爱好者社区  ·  Python 自动化运维 100个常见问题.pdf ·  昨天  
Python中文社区  ·  量化交易实战年终盘点!免费领限量红包封面 ·  3 天前  
Python爱好者社区  ·  60个拿来即用的Python办公自动化案例( ... ·  6 天前  
Python爱好者社区  ·  Beautiful ... ·  4 天前  
Python中文社区  ·  告别传统K线!用 Python 和 ... ·  6 天前  
51好读  ›  专栏  ›  Python中文社区

Python时间运算的详细机制初探讨

Python中文社区  · 公众号  · Python  · 2017-02-28 20:01

正文

專 欄


刘布丁,Python中文社区专栏作者,目前工作职位是Python后台工程师,擅长Python系统监控。codewars四级段位不断刷题中。
博客地址:http://coderselftrain.com/archives/


本篇共2部分,上篇我们初步探讨Python时间运算的机制,下篇为一句话快速运用Python的datetime进行时间运算的技巧。

Python时间运算的详细机制初探讨

我们先来看一张图:

  1. import time

导入时间模块;

  1. In [5]: time.strptime('20161009','%Y%m%d')

  2. Out[5]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm_isdst=-1)

  • 通过time.strptime()将普通字符时间转换为时间元祖,注意这两者在转换时需要指定字符时间的格式(%Y%m%d这里只用到了年月日);

  1. In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))

  2. Out[6]: 1475942400.0

  • 通过time.mktime将上一步的时间元祖转换为时间戳,也就是1970年0时0分0秒到20161009的0时0分0秒为止,过了多少秒;

  1. In [7]: time.localtime(1475942400.0)

  2. Out[7]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm_isdst=0)

  • 通过 time.localtime将时间戳转换为时间元祖;

  1. In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))

  2. Out[13]: '20161009'

  • 通过time.strftime将时间元祖复原为普通字符时间,同样注意需要指定字符时间的格式。

附:字符时间常用格式

  1. %Y  Year with century as a decimal number.

  2. %m  Month as a decimal number [01,12].

  3. %d  Day of the month as a decimal number [01,31].

  4. %H  Hour (24-hour clock) as a decimal number [00,23].

  5. %M  Minute as a decimal number [00,59].

  6. %S  Second as a decimal number [00,61].

  7. %z  Time zone offset from UTC.

  8. %a  Locale's abbreviated weekday name.

  9. %A  Locale's full weekday name.

  10. %b  Locale's abbreviated month name.

  11. %B  Locale's full month name.

  12. %c  Locale's appropriate date and time representation.

  13. %I  Hour (12-hour clock) as a decimal number [01,12].

  14. %p  Locale's equivalent of either AM or PM.

一句话快速进行python时间运算的技巧

1、python快速求值当前时间

当前的天数、当前的时间


  1. In [1]: from datetime import datetime, timedelta, date


  2. In [2]: (datetime.now()).strftime('%Y%m%d')

  3. Out[2]: '20161009'


  4. In [3]: (datetime.now()).strftime('%Y/%m/%d %H:%M:%S')

  5. Out[3]: '2016/10/09 16:57:12'

同上,当前的周数、月份、上下午等都可以通过后面的格式化字符求出。例如,

%a代表英文周几,%b代表月份,%p代表AM/PM等,更多的参考下图:

2 、python快速时间运算

python周数运算、天数运算、小时运算、秒数运算、毫秒运算、微秒运算

  1. In [5]: (datetime.now()-timedelta(days=1)).strftime('%Y%m%d')  # 1天前,N天前

  2. Out[5]: '20161008'


  3. In [6]: (datetime.now()-timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S')  # 1小时前,n小时前

  4. Out[6]: '2016/10/09 16:00:02'

同上,weeks表示周为单位,second表示秒为单位,milliseconds表示毫秒为单位, microseconds微秒为单位。

其实就是给 timedelta() 这个类传入的参数变一下就可以了:

可传入的参数有 timedelta(weeks, days, hours, second, milliseconds, microseconds) 每个参数都是可选参数,默认值为0,参数值必须是这些(整数,浮点数,正数,负数)。


优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。

100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。
扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!


§§

Python中文社区
www.python-cn.com

致力于成为

国内最好的Python社区


Python中文社区俱乐部QQ群:274631467

专栏作者申请邮箱

[email protected]

— Life is short,we use Python —