劉布丁,Python中文社區(qū)專(zhuān)欄作者,目前工作職位是Python后臺(tái)工程師,擅長(zhǎng)Python系統(tǒng)監(jiān)控。codewars四級(jí)段位不斷刷題中。 博客地址:http:///archives/
本篇共2部分,上篇我們初步探討Python時(shí)間運(yùn)算的機(jī)制,下篇為一句話(huà)快速運(yùn)用Python的datetime進(jìn)行時(shí)間運(yùn)算的技巧。 Python時(shí)間運(yùn)算的詳細(xì)機(jī)制初探討我們先來(lái)看一張圖: 
導(dǎo)入時(shí)間模塊; 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'
附:字符時(shí)間常用格式 %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.
一句話(huà)快速進(jìn)行python時(shí)間運(yùn)算的技巧1、python快速求值當(dāng)前時(shí)間當(dāng)前的天數(shù)、當(dāng)前的時(shí)間
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'
同上,當(dāng)前的周數(shù)、月份、上下午等都可以通過(guò)后面的格式化字符求出。例如, %a 代表英文周幾,%b 代表月份,%p 代表AM/PM等,更多的參考下圖:
2 、python快速時(shí)間運(yùn)算python周數(shù)運(yùn)算、天數(shù)運(yùn)算、小時(shí)運(yùn)算、秒數(shù)運(yùn)算、毫秒運(yùn)算、微秒運(yùn)算 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小時(shí)前,n小時(shí)前
Out[6]: '2016/10/09 16:00:02'
同上,weeks表示周為單位,second表示秒為單位,milliseconds表示毫秒為單位, microseconds微秒為單位。 其實(shí)就是給 timedelta() 這個(gè)類(lèi)傳入的參數(shù)變一下就可以了: 可傳入的參數(shù)有 timedelta(weeks, days, hours, second, milliseconds, microseconds) 每個(gè)參數(shù)都是可選參數(shù),默認(rèn)值為0,參數(shù)值必須是這些(整數(shù),浮點(diǎn)數(shù),正數(shù),負(fù)數(shù))。
優(yōu)秀人才不缺工作機(jī)會(huì),只缺適合自己的好機(jī)會(huì)。但是他們往往沒(méi)有精力從海量機(jī)會(huì)中找到最適合的那個(gè)。
100offer 會(huì)對(duì)平臺(tái)上的人才和企業(yè)進(jìn)行嚴(yán)格篩選,讓「最好的人才」和「最好的公司」相遇。 掃描下方二維碼,注冊(cè) 100offer,談?wù)勀銓?duì)下一份工作的期待。一周內(nèi),收到 5-10 個(gè)滿(mǎn)足你要求的好機(jī)會(huì)!
致力于成為 國(guó)內(nèi)最好的Python社區(qū)
Python中文社區(qū)俱樂(lè)部QQ群:274631467
專(zhuān)欄作者申請(qǐng)郵箱 pythonpost@163.com
— Life is short,we use Python —

|