刘布丁,Python中文社区专栏作者,目前工作职位是Python后台工程师,擅长Python系统监控。codewars四级段位不断刷题中。
博客地址:http://coderselftrain.com/archives/
本篇共2部分,上篇我们初步探讨Python时间运算的机制,下篇为一句话快速运用Python的datetime进行时间运算的技巧。
Python时间运算的详细机制初探讨
我们先来看一张图:
import time
导入时间模块;
In [5]: time.strptime('20161009','%Y%m%d')
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)
In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))
Out[6]: 1475942400.0
In [7]: time.localtime(1475942400.0)
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)
In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))
Out[13]: '20161009'
附:字符时间常用格式
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale's abbreviated weekday name.
%A Locale's full weekday name.
%b Locale's abbreviated month name.
%B Locale's full month name.
%c Locale's appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale's equivalent of either AM or PM.
一句话快速进行python时间运算的技巧
1、python快速求值当前时间
当前的天数、当前的时间
In [1]: from datetime import datetime, timedelta, date
In [2]: (datetime.now()).strftime('%Y%m%d')
Out[2]: '20161009'
In [3]: (datetime.now()).strftime('%Y/%m/%d %H:%M:%S')
Out[3]: '2016/10/09 16:57:12'
同上,当前的周数、月份、上下午等都可以通过后面的格式化字符求出。例如,
%a
代表英文周几,%b
代表月份,%p
代表AM/PM等,更多的参考下图:
2 、python快速时间运算
python周数运算、天数运算、小时运算、秒数运算、毫秒运算、微秒运算
In [5]: (datetime.now()-timedelta(days=1)).strftime('%Y%m%d') # 1天前,N天前
Out[5]: '20161008'
In [6]: (datetime.now()-timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S') # 1小时前,n小时前
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 个满足你要求的好机会!
— Life is short,we use Python —