摘要:可以使用進(jìn)行加減,得到一個(gè)對(duì)象也支持兩個(gè)時(shí)間比較提供多種方法獲取一個(gè)指定的時(shí)間,如明年或者下周三提供了一些方便的方法進(jìn)行如上操作。提供了很方便的方法按照微妙秒分鐘小時(shí)進(jìn)行過濾同樣,也支持按照年月份字符串處理另一個(gè)麻煩事是處理格式的字符串。
首先,約定三個(gè)概念。
navie datetime:沒有指定時(shí)區(qū)的datetime對(duì)象
localized datetime:指定時(shí)區(qū)的datetime對(duì)象
localizing:指定市區(qū)的的navie datetime
normalizing:datetime時(shí)區(qū)切換
一些例子首先,導(dǎo)入Delorean
*>>> from delorean import Delorean
使用UTC格式的當(dāng)前時(shí)間創(chuàng)建一個(gè)datetime
*>>> d = Delorean() *>>> d Delorean(datetime=datetime.datetime(2013, 1, 12, 6, 10, 33, 110674), timezone="UTC")
簡(jiǎn)單的時(shí)區(qū)切換
*>>> d = d.shift("US/Eastern") *>>> d Delorean(datetime=datetime.datetime(2013, 1, 12, 1, 10, 38, 102223), timezone="US/Eastern")
轉(zhuǎn)換成datetime看看
*>>> d.datetime datetime.datetime(2013, 1, 12, 01, 10, 38, 102223, tzinfo=) *>>> d.date datetime.date(2013, 1, 12)
單純的輸入時(shí)間看看
*>>> d.naive() datetime.datetime(2013, 1, 12, 1, 10, 38, 102223) *>>> d.epoch() 1357971038.102223
也是用unix時(shí)間戳初始化Delorean
*>>> from delorean import epoch *>>> epoch(1357971038.102223).shift("US/Eastern") Delorean(datetime=datetime.datetime(2013, 1, 12, 1, 10, 38, 102223), timezone="US/Eastern")
初始化后,就可以方便的切換到自己所需的時(shí)區(qū)
Delorean也可以使用指定的datetime對(duì)象進(jìn)行初始化,Delorean會(huì)自動(dòng)處理時(shí)區(qū)和時(shí)間
*>>> tz = timezone("US/Pacific") *>>> dt = tz.localize(datetime.utcnow()) datetime.datetime(2013, 3, 16, 5, 28, 11, 536818, tzinfo=) *>>> d = Delorean(datetime=dt) *>>> d Delorean(datetime=datetime.datetime(2013, 3, 16, 5, 28, 11, 536818), timezone="US/Pacific") *>>> d = Delorean(datetime=dt, timezone="US/Eastern") *>>> d Delorean(datetime=datetime.datetime(2013, 3, 16, 5, 28, 11, 536818), timezone="US/Pacific")
Delorean支持timedelta的時(shí)間加減法。Delorean可以使用timedelta進(jìn)行加減,得到一個(gè)Delorean對(duì)象
*>>> d = Delorean() *>>> d Delorean(datetime=datetime.datetime(2014, 6, 3, 19, 22, 59, 289779), timezone="UTC") *>>> d += timedelta(hours=2) *>>> d Delorean(datetime=datetime.datetime(2014, 6, 3, 21, 22, 59, 289779), timezone="UTC") *>>> d - timedelta(hours=2) Delorean(datetime=datetime.datetime(2014, 6, 3, 19, 22, 59, 289779), timezone="UTC") *>>> d2 = d + timedelta(hours=2) *>>> d2 - d datetime.timedelta(0, 7200)
Delorean也支持兩個(gè)時(shí)間比較
*>>> d1 = Delorean(datetime(2015, 1, 1), timezone="US/Pacific") *>>> d2 = Delorean(datetime(2015, 1, 1, 8), timezone="UTC") *>>> d1 == d2 True
Delorean提供多種方法獲取一個(gè)指定的時(shí)間,如明年或者下周三
Delorean提供了一些方便的方法進(jìn)行如上操作。
*>>> d = Delorean() *>>> d Delorean(datetime=datetime.datetime(2013, 1, 20, 19, 41, 6, 207481), timezone="UTC") *>>> d.next_tuesday() Delorean(datetime=datetime.datetime(2013, 1, 22, 19, 41, 6, 207481), timezone="UTC")
上周二、過去第二個(gè)周二午夜
*>>> d.last_tuesday() Delorean(datetime=datetime.datetime(2013, 1, 15, 19, 41, 6, 207481), timezone="UTC") *>>> d.last_tuesday(2).midnight() datetime.datetime(2013, 1, 8, 0, 0, tzinfo=過濾)
通常情況下我們不關(guān)心有多少微妙或者多少秒。例如,我們很難區(qū)別同一分鐘的兩個(gè)datetime對(duì)象。我們補(bǔ)習(xí)吧不關(guān)心的字段設(shè)置為0。
Delorean提供了很方便的方法按照微妙、秒、分鐘、小時(shí)進(jìn)行過濾
*>>> d = Delorean() *>>> d Delorean(datetime=datetime.datetime(2013, 1, 21, 3, 34, 30, 418069), timezone="UTC") *>>> d.truncate("second") Delorean(datetime=datetime.datetime(2013, 1, 21, 3, 34, 30), timezone="UTC") *>>> d.truncate("hour") Delorean(datetime=datetime.datetime(2013, 1, 21, 3, 0), timezone="UTC")
同樣,也支持按照年、月份
*>>> d = Delorean(datetime=datetime(2012, 5, 15, 03, 50, 00, 555555), timezone="US/Eastern") *>>> d Delorean(datetime=datetime.datetime(2012, 5, 15, 3, 50, 0, 555555), timezone="US/Eastern") *>>> d.truncate("month") Delorean(datetime=datetime.datetime(2012, 5, 1), timezone="US/Eastern") *>>> d.truncate("year")
Delorean(datetime=datetime.datetime(2012, 1, 1), timezone="US/Eastern")
字符串處理另一個(gè)麻煩事是處理datetime格式的字符串。Delorean可以很方便的處理
*>>> from delorean import parse *>>> parse("2011/01/01 00:00:00 -0700") Delorean(datetime=datetime.datetime(2011, 1, 1, 7), timezone="UTC")歧義字段的處理
Delorean提供了兩個(gè)字段dayfirst=True and yearfirst=True用來處理相應(yīng)格式的字符串,如果dayfirst和yearfirst是True
YY-MM-DD
DD-MM-YY
MM-DD-YY
默認(rèn)情況下,對(duì)于May 6th, 2013格式,Delorean返回‘2013-05-06
*>>> parse("2013-05-06")
Delorean(datetime=datetime.datetime(2013, 5, 6), timezone="UTC")
dayfirst和yearfirst的配置如下:
如果dayfirst是False,yearfirst是False
MM-DD-YY
DD-MM-YY
YY-MM-DD
如果dayfirst是True,yearfirst是False
DD-MM-YY
MM-DD-YY
YY-MM-DD
如果dayfirst是False,yearfirst是True
YY-MM-DD
MM-DD-YY
DD-MM-YY
時(shí)間步進(jìn)*>>> import delorean *>>> from delorean import stops *>>> for stop in stops(freq=delorean.HOURLY, count=10): print stop ... Delorean(datetime=datetime.datetime(2013, 1, 21, 6, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 7, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 8, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 9, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 10, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 11, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 12, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 13, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 14, 25, 33), timezone="UTC") Delorean(datetime=datetime.datetime(2013, 1, 21, 15, 25, 33), timezone="UTC")
注意:stops只接受naive datetime
可以指定開始和結(jié)束的時(shí)間
*>>> for stop in stops(freq=delorean.DAILY, count=10, timezone="US/Eastern", start=d1, stop=d2): print stop ... Delorean(datetime=datetime.datetime(2012, 5, 6), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 7), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 8), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 9), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 10), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 11), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 12), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 13), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 14), timezone="US/Eastern") Delorean(datetime=datetime.datetime(2012, 5, 15), timezone="US/Eastern")
只指定結(jié)束時(shí)間是不行的
*>>> for stop in stops(freq=delorean.DAILY, timezone="US/Eastern", stop=d2): print stop ... Traceback (most recent call last): File "", line 1, in
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45400.html
1.delorean 非??岬娜掌?時(shí)間庫(kù) from delorean import Delorean EST = US/Eastern d = Delorean(timezone=EST) 2.prettytable 可以在瀏覽器或終端構(gòu)建很不錯(cuò)的輸出 from prettytable import PrettyTable table = PrettyTable([animal, feroc...
摘要:非??岬娜掌跁r(shí)間庫(kù)可以在瀏覽器或終端構(gòu)建很不錯(cuò)的輸出 1) delorean 非??岬娜掌?時(shí)間庫(kù) from delorean import Delorean EST = US/Eastern d = Delorean(timezone=EST) 2) prettytable 2) prettytable 可以在瀏覽器或終端構(gòu)建很不錯(cuò)的輸出 from prettytable...
摘要:譯發(fā)蠎周刊最贊這周咱們作點(diǎn)兒不同的本文根據(jù)大家過去對(duì)周刊文章的點(diǎn)擊量分析出的年度頂級(jí)項(xiàng)目希望大家喜歡如果怕我們錯(cuò)過年的最佳項(xiàng)目請(qǐng)及時(shí)郵件知會(huì)一下次周我們將恢復(fù)期周刊新年新折騰我們發(fā)布了現(xiàn)在開始到一月底使用優(yōu)惠碼發(fā)布職位信息可以獲得的折扣才 譯發(fā): 蠎周刊 : 2013最贊 Hi Pythonistas! 這周咱們作點(diǎn)兒不同的 ;-) 本文根據(jù)大家過去對(duì)周刊文章的點(diǎn)擊量分析出的 ...
摘要:蠎周刊年度最贊親俺們又來回顧又一個(gè)偉大的年份兒包去年最受歡迎的文章和項(xiàng)目如果你錯(cuò)過了幾期就這一期不會(huì)丟失最好的嗯哼還為你和你的準(zhǔn)備了一批紀(jì)念裇從這兒獲取任何時(shí)候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
閱讀 3486·2023-04-26 02:48
閱讀 1475·2021-10-11 10:57
閱讀 2502·2021-09-23 11:35
閱讀 1210·2021-09-06 15:02
閱讀 3310·2019-08-30 15:54
閱讀 1626·2019-08-30 15:44
閱讀 893·2019-08-30 15:44
閱讀 1000·2019-08-30 12:52