第三方库-时间函数dateutil

摘要:
在dateutil中,有两个东西吸引了我,一个是解析器,另一个是rrule。解析器将字符串解析为datetime,而rrule根据定义的规则生成datetime。无需下载源代码包进行安装。您可以使用easy_install或pip在线安装easy_Iinstallpython dateutilpipinstallpyton dateutil手动安装。关于解析器字符串,您可以使用英语单词time和date,也可以使用水平线、逗号和空格作为分隔符。˃˃Fromdateutil公司。parsereimportparse˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parsedatetime。datetime˃˃parse#fuzzy启用模糊匹配并筛选出无法识别的时间和日期字符datetime datetime rrule函数的原型如下所示。其中,频率:可以理解为一个单位。Dtstart,until:开始和结束时间。例如,byweekday=仅在周一和周二匹配。

在dateutil中,吸引我的东西有2个,1个是parser,1个是rrule。

其中parser是根据字符串解析成datetime,而rrule是则是根据定义的规则来生成datetime。

安装
没必要下载源码包手动安装,直接用easy_install或pip在线安装
easy_install python-dateutil
pip install python-dateutil

关于parser
字符串可以很随意,可以用时间日期的英文单词,可以用横线、逗号、空格等做分隔符。

没指定时间默认是0点,没指定日期默认是今天,没指定年份默认是今年。

>>from dateutil.parser import parse

>>parse("Wed, Nov 12")
datetime.datetime(2013, 11, 12, 0, 0)
>>parse("2013-08-20")
datetime.datetime(2013, 8, 20, 0, 0)
>>parse("20130820")
datetime.datetime(2013, 8, 20, 0, 0)
>>parse("2013,08,20")
datetime.datetime(2013, 8, 20, 0, 0)
>>parse("08,20")
datetime.datetime(2013, 8, 20, 0, 0)
>>parse("12:00:00")
datetime.datetime(2013, 8, 20, 12, 0)
>>parse("this is the wonderful moment 12:00:00,I feel good",fuzzy=True)#fuzzy开启模糊匹配,过滤掉无法识别的时间日期字符

datetime.datetime(2013, 8, 20, 12, 0)

关于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)
其中
freq:可以理解为单位。可以是 YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY。即年月日周时分秒。
dtstart,until:是开始和结束时间。
wkst:周开始时间。
interval:间隔。
count:指定生成多少个。
byxxx:指定匹配的周期。比如byweekday=(MO,TU)则只有周一周二的匹配。byweekday可以指定MO,TU,WE,TH,FR,SA,SU。即周一到周日。

>>from dateutil.rrule import *
>>list(rrule(DAILY,dtstart=parse('2013-08-01'),until=parse('2013-08-07'))) #2013-08-01到2013-08-07每日
[datetime.datetime(2013, 8, 1, 0, 0),
datetime.datetime(2013, 8, 2, 0, 0),
datetime.datetime(2013, 8, 3, 0, 0),
datetime.datetime(2013, 8, 4, 0, 0),
datetime.datetime(2013, 8, 5, 0, 0),
datetime.datetime(2013, 8, 6, 0, 0),
datetime.datetime(2013, 8, 7, 0, 0)]

>>list(rrule(DAILY,interval=3,dtstart=parse('2013-08-01'),until=parse('2013-08-07'))) #间隔为3
[datetime.datetime(2013, 8, 1, 0, 0),
datetime.datetime(2013, 8, 4, 0, 0),
datetime.datetime(2013, 8, 7, 0, 0)]

>>list(rrule(DAILY,count=3,dtstart=parse('2013-08-01'),until=parse('2013-08-07'))) #只生成3个
[datetime.datetime(2013, 8, 1, 0, 0),
datetime.datetime(2013, 8, 2, 0, 0),
datetime.datetime(2013, 8, 3, 0, 0)]

>>list(rrule(DAILY,byweekday=(MO,TU),dtstart=parse('2013-08-01'),until=parse('2013-08-07'))) #只匹配周一周二的
[datetime.datetime(2013, 8, 5, 0, 0), datetime.datetime(2013, 8, 6, 0, 0)]

>>list(rrule(MONTHLY,dtstart=parse('2013-05-19'),until=parse('2013-08-20'))) #按月为单位
[datetime.datetime(2013, 5, 19, 0, 0),
datetime.datetime(2013, 6, 19, 0, 0),
datetime.datetime(2013, 7, 19, 0, 0),
datetime.datetime(2013, 8, 19, 0, 0)]

————————————————
版权声明:本文为CSDN博主「mattkang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/handsomekang/article/details/10128671

until = time.strftime("%Y-%m-%d", time.localtime())
dtstart = '2019-01-02'
        
 datelist = list(rrule(DAILY, dtstart=parse(dtstart), until=parse(until)))
datelist.sort(reverse=True)
or date indatelist:
       Y_m = date.strftime("%Y%m")
       Y_m_d = date.strftime("%Y%m%d")
        print(date.strftime("%Y-%m-%d %H:%M:%S"))

免责声明:文章转载自《第三方库-时间函数dateutil》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇eclipse中mybatis generator插件的安装与使用,实现自动生成代码Html富文本编辑器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

SpringBoot项目中@Async方法没有执行的问题分析

现象:1.明显的现象:在日志文件中找不到方法中的日志输出,并且没有错误报告(即,未执行@Async标记的方法,也没有错误报告)。2.分析现象:日志中某段时间后没有任务xxx线程的日志原因:@Async异步方法默认使用Spring创建ThreadPoolTaskExecutor(参考TaskExecutionAutoConfiguration),其中默认核心线...

vsCode mongoDB插件 Azure Cosmos DB

安装完成后,要重启下vsCode会看到然后点击绿色的小按钮,选择MongoDB再输入MongoDB的连接地址。当然要先把本地的mongoDB数据库打开,cmd黑窗口输入mongod--dbpathxxxx打开本地数据库输入完成地址后,回车就可以连接到自己的MongoDB数据库了...

「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。108种传感器模块系列实验实验二十六:4X4矩阵键盘模块矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组。工作原理矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。矩阵键盘所需库文件在ArduinoIDE1.8.0...

记一次Arcgis Server10.2许可过期导致发布图层失败

1.今天,当使用arcmap将地图服务发布到arcgisserver时,发布突然失败。在arcgisserver的管理页面的日志选项中发现错误:未能初始化服务器对象“System/PublicingTools”:0x80004005:错误:(-8003)YourArcGISServerlicense已过期。2.然后在服务器路径中查找文件:...

uniapp之页面间传递和接收数组

uni-app如何在页面之前发送和传递数组?如果阵列是直接发送和传递的,则收到的消息如下所示。无法获取更多的对象值。接收数组对象的参数。您可以首先将数组转换为JSON字符串,然后在将其传递到页面后将其解析为JavaScript对象。...

Google Drive 里的文件下载的方法

Google Drive不提供创建直接下载链接的选项,但您可以通过更改链接形式在本地保存共享内容。例如,通过Google Drive共享的文件链接是:https://drive.google.com/file/d/FILE_ID/edit?usp=sharing如果您将其更改为以下修改版本,然后通过浏览器打开,则将直接下载该文件:https://drive....