本文共 2227 字,大约阅读时间需要 7 分钟。
本篇共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_
通过time.strptime()
将普通字符时间转换为时间元祖,注意这两者在转换时需要指定字符时间的格式(%Y%m%d
这里只用到了年月日);
In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))Out[6]: 1475942400.0
通过time.mktime
将上一步的时间元祖转换为时间戳,也就是1970年0时0分0秒到20161009的0时0分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_yd
通过 time.localtime
将时间戳转换为时间元祖;
In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))Out[13]: '20161009'通过
time.strftime
将时间元祖复原为普通字符时间,同样注意需要指定字符时间的格式。 附:字符时间常用格式
%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时间运算的技巧
当前的天数、当前的时间
In [1]: from datetime import datetime, timedelta, dateIn [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等,更多的参考下图:
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,参数值必须是这些(整数,浮点数,正数,负数)。
原文发布时间为:2017-02-28
本文作者:刘布丁
本文来自云栖社区合作伙伴“”,了解相关信息可以关注“”微信公众号
转载地址:http://dxofa.baihongyu.com/