表示部分和近似日期的类

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第三方库


热门话题
java在JSP中添加自定义隐式对象   java MasterMindResource泄漏?   不同的c#java结果加密   java为什么安卓 studio显示“constraintlayout中缺少约束”错误?   java Make Logback将日志打印到文件中   java如何在Google应用程序引擎中设置日期时间?   jeditorpane如何阻止java HTMLEditorKit自动关闭我的标记   返回到Activity onCreate()时,不会调用java函数   java为什么我在这个对象上得到一个NullPointerException?   在java中,如何使用包含数组的参数调用图形方法?   java如何在Play framework 2应用程序中存储Akka参与者列表?   ssh使用java将文件从一个solaris 9复制到另一个solaris 9   网络Java服务器正在等待客户端响应   java Spring mvc从formBackingObject()重定向到页面   java Spark:JavaRDD<Tuple2>到javapairdd<>   java如何动态调用基类中由字符串值指定的子类方法?