Python中有很多时间处理库,其中比较常用的就是datetime。但是对于懒人来说还是很不舒服的。有没有更简单的时间库,可以把我们的需求比如白话文转换成字符串。今天,我在GitHub上发现了这个有趣的库。让我们看一次。这个库的目标是通过简单的字符串来操作数据时间。它是数据时间之上的一层封装。挺有趣的。让我们一起来了解一下。安装:pytime的安装非常简单,直接使用pip3installpytime即可。如何使用:1)。简单获取当前月、周、日的时间,以及上周和上个月的时间,看输出结果:today:2020-08-16thisweek:(datetime.date(2020,8,10),datetime.date(2020,8,17))上周:(datetime.date(2020,8,3),datetime.date(2020,8,11))this_month:(datetime.date(2020,8,1),datetime.date(2020,9,1))日期范围其实是元组类型的datatime起止日期范围。2).直接输出常见的圣诞节、情人节、元旦、母亲节、父亲节等节日日期。源码的拆解好像是作者固定假期的包。让我们看一下源代码。仔细看看源码中封装了哪些节日:在源码中,可以清楚的看到作者是如何构建这个节日的。其实已经进行了一些简单的计算,但是代码还是很工整的。3).识别文本字符串——获取日期的动态识别文本,然后计算时间,应该是这个库最吸引人的部分。毕竟你也可以自己封装上面的日期和节假日。不过识别文字有点意思:上面两个函数计算的是某个日期之前多少天,某个日期之后多少天,可以自动识别这个字符串比如2years3mon23week3d2hr或者没有空格也可以写在一起.2years3mon23week3d2hr反汇编源码:很强大,小编也很好奇它是怎么做到的,于是打开这段源码看了看:原来before函数的接口有两个参数。一个是base,一个是diff,base将时间字符串转成datetime类型,然后diff会用一个dp(diff)封装,然后解析这一长串字符串,顺藤摸瓜,一起来看看这个dp(Whatdiddiff)do:dp=BaseParser.parse_diffdp其实是BaseParse解析器的一个接口函数,也就是说所有字符串的解析都在这个parse_diff:果然这个函数是专门用来处理我们的输入的“2years3mon23week3d2hr”,作者做了很多封装,就是为了让我们在使用的时候更聪明一些。通过层层拆解,你会发现整个作者设计这个库的思路和一些技巧。这个过程经常练习,对你提高Python技能大有裨益。有兴趣的朋友也可以试试这个Library,代码搬家。
