摘要:可以使用進(jìn)行加減,得到一個對象也支持兩個時間比較提供多種方法獲取一個指定的時間,如明年或者下周三提供了一些方便的方法進(jìn)行如上操作。提供了很方便的方法按照微妙秒分鐘小時進(jìn)行過濾同樣,也支持按照年月份字符串處理另一個麻煩事是處理格式的字符串。
首先,約定三個概念。
navie datetime:沒有指定時區(qū)的datetime對象
localized datetime:指定時區(qū)的datetime對象
localizing:指定市區(qū)的的navie datetime
normalizing:datetime時區(qū)切換
一些例子首先,導(dǎo)入Delorean
*>>> from delorean import Delorean
使用UTC格式的當(dāng)前時間創(chuàng)建一個datetime
*>>> d = Delorean() *>>> d Delorean(datetime=datetime.datetime(2013, 1, 12, 6, 10, 33, 110674), timezone="UTC")
簡單的時區(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)
單純的輸入時間看看
*>>> d.naive() datetime.datetime(2013, 1, 12, 1, 10, 38, 102223) *>>> d.epoch() 1357971038.102223
也是用unix時間戳初始化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")
初始化后,就可以方便的切換到自己所需的時區(qū)
Delorean也可以使用指定的datetime對象進(jìn)行初始化,Delorean會自動處理時區(qū)和時間
*>>> 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的時間加減法。Delorean可以使用timedelta進(jìn)行加減,得到一個Delorean對象
*>>> 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也支持兩個時間比較
*>>> d1 = Delorean(datetime(2015, 1, 1), timezone="US/Pacific") *>>> d2 = Delorean(datetime(2015, 1, 1, 8), timezone="UTC") *>>> d1 == d2 True
Delorean提供多種方法獲取一個指定的時間,如明年或者下周三
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")
上周二、過去第二個周二午夜
*>>> 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ū)別同一分鐘的兩個datetime對象。我們補(bǔ)習(xí)吧不關(guān)心的字段設(shè)置為0。
Delorean提供了很方便的方法按照微妙、秒、分鐘、小時進(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")
字符串處理另一個麻煩事是處理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提供了兩個字段dayfirst=True and yearfirst=True用來處理相應(yīng)格式的字符串,如果dayfirst和yearfirst是True
YY-MM-DD
DD-MM-YY
MM-DD-YY
默認(rèn)情況下,對于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
時間步進(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é)束的時間
*>>> 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é)束時間是不行的
*>>> 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45400.html
1.delorean 非常酷的日期/時間庫 from delorean import Delorean EST = US/Eastern d = Delorean(timezone=EST) 2.prettytable 可以在瀏覽器或終端構(gòu)建很不錯的輸出 from prettytable import PrettyTable table = PrettyTable([animal, feroc...
摘要:非常酷的日期時間庫可以在瀏覽器或終端構(gòu)建很不錯的輸出 1) delorean 非常酷的日期/時間庫 from delorean import Delorean EST = US/Eastern d = Delorean(timezone=EST) 2) prettytable 2) prettytable 可以在瀏覽器或終端構(gòu)建很不錯的輸出 from prettytable...
摘要:譯發(fā)蠎周刊最贊這周咱們作點(diǎn)兒不同的本文根據(jù)大家過去對周刊文章的點(diǎn)擊量分析出的年度頂級項(xiàng)目希望大家喜歡如果怕我們錯過年的最佳項(xiàng)目請及時郵件知會一下次周我們將恢復(fù)期周刊新年新折騰我們發(fā)布了現(xiàn)在開始到一月底使用優(yōu)惠碼發(fā)布職位信息可以獲得的折扣才 譯發(fā): 蠎周刊 : 2013最贊 Hi Pythonistas! 這周咱們作點(diǎn)兒不同的 ;-) 本文根據(jù)大家過去對周刊文章的點(diǎn)擊量分析出的 ...
摘要:蠎周刊年度最贊親俺們又來回顧又一個偉大的年份兒包去年最受歡迎的文章和項(xiàng)目如果你錯過了幾期就這一期不會丟失最好的嗯哼還為你和你的準(zhǔn)備了一批紀(jì)念裇從這兒獲取任何時候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點(diǎn)合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
閱讀 3461·2023-04-26 02:48
閱讀 1465·2021-10-11 10:57
閱讀 2490·2021-09-23 11:35
閱讀 1196·2021-09-06 15:02
閱讀 3294·2019-08-30 15:54
閱讀 1612·2019-08-30 15:44
閱讀 879·2019-08-30 15:44
閱讀 988·2019-08-30 12:52