蟒蛇时代的人类

HumanTime的Python项目详细描述


人工时间

HumanTime是人类在python中的时间。

避开繁琐且容易出错的代码,转而使用简单的、基于英语的dsl来指定绝对时间和相对时间:

HumanTime.parseTime(Input) | Input
---------------------------+------------------------------------------
2019-05-05 19:32:28.493048 | now
2019-05-05 00:00:00.000000 | today
2019-05-05 12:00:00.000000 | noon
2019-05-04 00:00:00.000000 | yesterday
2019-05-06 00:00:00.000000 | tomorrow
2019-05-06 12:00:00.000000 | tomorrow at noon
2019-05-06 15:30:00.000000 | tomorrow at 3:30PM
2019-05-08 00:00:00.000000 | Wednesday
2019-05-05 22:32:28.493048 | 3 hours from now
2019-05-05 22:31:28.493048 | 1 minute before 3 hours from now
2019-05-05 13:00:00.000000 | an hour after noon
2019-05-05 20:00:00.000000 | eight hours after noon
2019-04-30 00:00:00.000000 | 3 months after 2019-1-31
2021-02-28 00:00:00.000000 | 1 year after 2020-02-29
2019-01-01 00:00:02.000000 | second second after 2019-01-01
2019-06-16 00:00:00.000000 | 1 month after Thurs after 2019-5-9
2019-07-05 00:00:00.000000 | business day after 2019-7-3
2019-07-08 00:00:00.000000 | couple bus days after 2019-7-3

安装

要安装,只需使用pip

> python3 -m pip install HumanTime

用法

看看HumanTime--

的简洁和优雅

次数

>>> import HumanTime
>>> HumanTime.parseTime('now')
datetime.datetime(2019, 5, 5, 20, 38, 10, 119936)
>>> HumanTime.parseTime('3 hours from now')
datetime.datetime(2019, 5, 5, 23, 38, 13, 120777)
>>> HumanTime.parseTime('2019-1-3')
datetime.datetime(2019, 1, 3, 0, 0)
>>> HumanTime.parseTime('three days before 2019-1-3')
datetime.datetime(2018, 12, 31, 0, 0)
>>> HumanTime.parseTime('a month after 20200131')
datetime.datetime(2020, 2, 29, 0, 0)
>>> HumanTime.parseTime('Tuesday')
datetime.datetime(2019, 5, 7, 0, 0)
>>> HumanTime.parseTime('wed')
datetime.datetime(2019, 5, 8, 0, 0)
>>> HumanTime.parseTime('Thurs after 2019-5-9')
datetime.datetime(2019, 5, 16, 0, 0)
>>> HumanTime.parseTime('2 business days before 2019-7-8')
datetime.datetime(2019, 7, 3, 0, 0)

持续时间

固定长度的持续时间,可以用datetime.timedelta表示,也可以解析:

>>> HumanTime.parseDuration('3 seconds')
datetime.timedelta(seconds=3)
>>> HumanTime.parseDuration('3 minutes')
datetime.timedelta(seconds=180)
>>> HumanTime.parseDuration('3 days')
datetime.timedelta(days=3)
>>> HumanTime.parseDuration('three weeks')
datetime.timedelta(days=21)

数字

简单数字(解析时间所需的数字)也可以单独解析:

>>> HumanTime.parseCardinal('four')
4
>>> HumanTime.parseOrdinal('fourth')
4
>>> HumanTime.parseNumber('20th')
20
>>> HumanTime.parseNumber('45')
45

开发

单元测试

可以使用以下命令运行单元测试:

> python3 -m unittest discover
...........................................................................
----------------------------------------------------------------------
Ran 75 tests in 0.020s

OK

ci

gitlab ci通过.gitlab-ci.yml处理连续集成。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓中以编程方式扫描无线网络和连接?   Java中的mysql JSP登录问题   java改造2.0多拦截器   运行方法内部的java线程状态冲突;为什么线程状态不是“正在运行”   java Ruby Compass编译器输出   java简单密钥侦听器   java无法统计应用程序。从2.0.6更新SpringBoot之后。发布到2.1.0。释放   使用Hibernate应用程序的java Spring启动失败   java CommonExec:在系统路径上执行程序?   JavaSwing实现基于阶段的GUI的正确方法是什么?   java如何使用GWT编程设置CSS类的宽度?   scala java。lang.NoSuchFieldException:_ebean_道具总是在将ebean从3.3.4升级到4.5.5时出现,   java Android:开发的应用程序可以在emulator中运行,但不能安装在我的设备中   java“null”是如何工作的?它的值是常数吗?   使用JBeret运行SleepyBatchlet时发生java JSR352 JBeret错误