主要是對dateutil模塊做個小結(jié),參考資料主要是資料1和官方文檔,感謝原作者。
之所以只對dateutil模塊總結(jié),是因為dateutil是高級封裝包,更加友好,對數(shù)據(jù)分析人員和建模人員來說更加易用,基本能解決日常的大部分場景。
dateutil模塊主要有兩個函數(shù),parser和rrule,其中parser是根據(jù)字符串解析成datetime,而rrule則是根據(jù)定義的規(guī)則來生成datetime。
1、parser
from dateutil.parser import parse
parse("2018-10-21")
parse("20181021") #? datetime.datetime(2018, 10, 21, 0, 0)parse("21/10")
#? ValueError: month must be in 1..12parse("Mar 15 2018") # 英文也能識別
2、rrule
rrule(self, freq, dtstart=None, interval=1, wkst=None,count=None, until=None, bysetpos=None,bymonth=None, bymonthday=None, byyearday=None, byeaster=None,byweekno=None, byweekday=None, byhour=None, byminute=None, bysecond=None,cache=False)
wkst:周開始時間,interval:間隔,count:指定生成多少個,byxxx:指定匹配的周期,如byweekday=(MO,TU)則只有周一周二的匹配。
from dateutil import rrule
# 間隔一天生成時間
list(rrule.rrule(rrule.DAILY,interval=2,dtstart=parse('2018-11-1'),until=parse('2018-11-5')))# 只包含周六、周日的。
list(rrule.rrule(rrule.DAILY,byweekday=(rrule.SA,rrule.SU),dtstart=parse('2018-11-1'),until=parse('2018-11-5')))# 計算時間差
rrule.rrule(rrule.MONTHLY,dtstart=parse('2018-3-15'),until=parse('2018-11-20')).count()
9
前一個月為m月,后一個月為n月,當日期不滿整月時,差的月數(shù)按n-m算,當日期滿整月后,差的月數(shù)按n-m+1算。
其實,python還有一個專門的日歷的包calendar,有興趣的朋友可以看看,也簡單的很。
3、常用操作
當前時間
date = DateUtil.date() #? Date
now = DateUtil.now() #? 當前時間字符串,格式:yyyy-MM-dd HH:mm:ss
today= DateUtil.today() #? 當前日期字符串,格式:yyyy-MM-dd
獲取細分時間,如年、月等,DateUtil.year(date)。
進行時間偏移的計算,newDate2 = DateUtil.offsetDay(date,3)。
年齡計算,DateUtil.ageOfNow("1990-01-30")
附,參考資料:
1、Python時間處理-dateutil模塊,http://www.itdecent.cn/p/f29dddce3a9a