主要是对dateutil模块做个小结,参考资料主要是资料1和官方文档,感谢原作者。
之所以只对dateutil模块总结,是因为dateutil是高级封装包,更加友好,对数据分析人员和建模人员来说更加易用,基本能解决日常的大部分场景。
dateutil模块主要有两个函数,parser和rrule,其中parser是根据字符串解析成datetime,而rrule则是根据定义的规则来生成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月,当日期不满整月时,差的月数按n-m算,当日期满整月后,差的月数按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模块,https://www.jianshu.com/p/f29dddce3a9a