表示部分和近似日期的类

approx-dates的Python项目详细描述


[这是这个库的初步版本(因此是0.* 版本号)和API可能会更改。]

能够表示部分或 Python中的近似日期。通俗地说,这些例子 可能是:

  • 1963年(即仅指年份,未指定月份或日期)
  • 1979年3月 指定)
  • 在2015年7月21日之前的某个时候
  • 在2000年1月1日之后的某一时刻
  • 2016年12月25日至31日之间的某一点
  • 在过去的任意或未知点
  • 在未来的任意或未知点

ApproxDate类也可以表示以上所有内容 作为精确的日期,确切的年、月和日是已知的。

这个包已经在Python2.7和Python3.5上进行了测试。

类似包装

我知道这个包裹的替代品是 ApproximateDate来自django-date-extensions的类。这个有 近似日期的不同模型-它们可以是{TT3}$, futureYYYYYYYY-MMYYYY-MM-DD,而 ApproxDate此包中的模型还可以表示日期 已知在两个任意日期之间,或已知 在某一特定日期之前(或之后)。

安装

您可以使用以下命令安装此软件包:

pip install approx_dates

使用量

您可以从ISO创建完整日期或部分日期 8601字符串:

fromapprox_dates.modelsimportApproxDateApproxDate.from_iso8601('1215-06-15')ApproxDate.from_iso8601('1215-06')ApproxDate.from_iso8601('1215')

或者你可以在过去或将来任意地重复点 使用:

ApproxDate.PASTApproxDate.FUTURE

要表示在两个范围内的某个日期,可以 指定两个端点。例如:

fromdatetimeimportdateApproxDate(date(2016,12,25),date(2016,12,31))

这些端点旨在包含在内。例如, 上面的ApproxDate可能表示25、26,…或 2016年12月31日。

您可以测试ApproxDate是否任意表示 在遥远的将来或过去使用pastfuture属性,其计算结果为TrueFalse

ApproxDate转换为核心python的 datetime.date对象,您可以使用 方法:

ad=ApproxDate.from_iso8601('1979-03')ad.earliest_date>>>datetime.date(1979,3,1)ad.latest_date>>>datetime.date(1979,3,31)ad.midpoint_date>>>datetime.date(1979,3,16)

显然,一个ApproxDate是早于还是晚于 另一个是定义错误的,所以__lt____gt____lte____gte__magic方法未在上定义 ApproxDate。如果需要比较两个ApproxDate 对象,首先需要将其转换为datetime.date 使用上述方法之一。

定义了__eq____ne__magic方法,以便 可以测试两个大概的日期是否代表 完全相同的日期范围。如果右手 平等或不平等比较的一面是 datetime.date,如果ApproxDate 左边精确到一天,重复相同的日期。

您还可以测试datetime.date是否介于 两个ApproxDatedatetime.date对象使用 ApproxDate.possibly_between类方法,例如:

d1=ApproxDate.from_iso8601('2000')d2=ApproxDate.from_iso8601('2005')ApproxDate.possibly_between(d1,date(2000,7,1),d2)>>>TrueApproxDate.possibly_between(d1,date(1999,12,31),d2)>>>True

发展

克隆此存储库后,可以安装依赖项 用于开发:

pip install -e .
pip install tox

然后使用以下命令运行测试:

tox

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

推荐PyPI第三方库


热门话题
使用硬件相关VM参数(重新)启动Java应用程序的正确方法?   java有一个Eclipse插件弹出菜单,只有在选择文件夹时才会出现   java演示简单Ajax ans Servelt实现失败   java如何在不需要OAuth授权的情况下代表组织用户提供密码   java检查一个字符串是否等于另一个字符串的子字符串   java我可以从for循环中的1开始初始化2D数组吗   使用选择排序的java排序2D数组   java如何在一轮投票后重新开始,而不在其中存储统计数据   我的Java代码不断向文本文件添加重复项   java MapReduce Hadoop字长频率不起作用   试图保存Iterable时执行独立工作时发生java错误   java这两个源是同一个场景生成器吗?   java计划重试关联的JMS消息