argparse的分析器相关时间
typedate的Python项目详细描述
要求
- python 2.7版
- python 3.3或更高版本
- 使用2.7、3.7进行测试
安装
$ pip install typedate
类型
这个库提供3个类来解析字符串,并输出与时间相关的对象。
TypeDate: | Date (and time) parser parses string. Time format, timezone and timedelta are specified when it is made. |
---|---|
TypeDelta: | Delta parser parses numbers with time units separeted a space. It will be interpreted as delta function arguments. |
TypeZone: | Timezone parser parses timezone string. |
用法
例如,使用带有argparse的类,如下所示:
#!/usr/bin/env pythonfromdatetimeimportdatetimefromtypedateimportTypeDate,TypeDelta,TypeZoneif__name__=='__main__':importargparseparser=argparse.ArgumentParser()# datetime parsingparser.add_argument("--datetime1",type=TypeDate('%Y%m%d'))parser.add_argument("--datetime2",type=TypeDate(timezone='Asia/Tokyo'))parser.add_argument("--datetime3",type=TypeDate(timezone='+09:00'))parser.add_argument("--datetime4",type=TypeDate(timedelta='1years -2months 3days 4hours 5minute 6seconds'))# timezone parsingparser.add_argument("--timezone1",type=TypeZone())parser.add_argument("--timezone2",type=TypeZone())parser.add_argument("--timezone3",type=TypeZone(callback=lambdatz:datetime(2018,7,14,tzinfo=tz)))# timedelta parsing## if python-dateutil installed, used automatically dateutil.relativedelta.relativedelta else datetime.timedelta.parser.add_argument("--defaultdelta",type=TypeDelta())## it can be specified by cls argument.fromdatetimeimporttimedeltafromdateutil.relativedeltaimportrelativedeltaparser.add_argument("--timedelta",type=TypeDelta(cls=timedelta))parser.add_argument("--relativedelta",type=TypeDelta(cls=relativedelta))args=parser.parse_args()print('datetime1:\t',args.datetime1,type(args.datetime1))print('datetime2:\t',args.datetime2,type(args.datetime2))print('datetime3:\t',args.datetime3,type(args.datetime3))print('datetime4:\t',args.datetime4,type(args.datetime4))print('timezone1:\t',args.timezone1,type(args.timezone1))print('timezone2:\t',args.timezone2,type(args.timezone2))print('dt with tz3:\t',args.timezone3,type(args.timezone3))print('defaultdelta:\t',args.defaultdelta,type(args.defaultdelta))print('timedelta:\t',args.timedelta,type(args.timedelta))print('relativedelta:\t',args.relativedelta,type(args.relativedelta))
将上述文件保存为command.py,并按如下方式执行。
$ python command.py \ --datetime1='19880522'\ --datetime2='2016-01-01'\ --datetime3='2016/01/01'\ --datetime4='01/01 00:00 2016'\ --timezone1='-0500'\ --timezone2='Asia/Tokyo'\ --timezone3='04:00'\ --defaultdelta='1years -2months 3days 4hours 5minutes 6seconds'\ --timedelta='3days 4hours 5minutes 6seconds'\ --relativedelta='1years -2months 3days 4hours 5minutes 6seconds' datetime1: 1988-05-22 00:00:00 <class 'datetime.datetime'> datetime2: 2016-01-01 00:00:00+09:00 <class 'datetime.datetime'> datetime3: 2016-01-01 00:00:00+09:00 <class 'datetime.datetime'> datetime4: 2016-11-04 04:05:06 <class 'datetime.datetime'> timezone1: -05:00 <class 'typedate.type.zone.TzInfo'> timezone2: Asia/Tokyo <class 'pytz.tzfile.Asia/Tokyo'> dt with tz3: 2018-07-14 00:00:00+04:00 <class 'datetime.datetime'> defaultdelta: relativedelta(years=+1, months=-2, days=+3, hours=+4, minutes=+5, seconds=+6) <class 'dateutil.relativedelta.relativedelta'> timedelta: 3 days, 4:05:06 <class 'datetime.timedelta'> relativedelta: relativedelta(years=+1, months=-2, days=+3, hours=+4, minutes=+5, seconds=+6) <class 'dateutil.relativedelta.relativedelta'>
历史记录
1.1.x
向每种类型添加了回调参数。
它可以使用原始值返回其他值。
1.0.x
- 首次发布