Python小结_时间函数

主要是对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..12

parse("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

推荐阅读更多精彩内容