表示部分和近似日期的类
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}$, future,YYYY,YYYY-MM或YYYY-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是否任意表示 在遥远的将来或过去使用past和 future属性,其计算结果为True或False。
将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是否介于 两个ApproxDate或datetime.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