关于python:如何存储描述性日期,如“2月的最后一天”,“4月的第四个星期六”?

How does one store descriptive dates like the “The last day in Feb”, “Fourth Saturday in April”?

我有一些描述日期的数据(例如,感恩节前的星期一、二月的最后一天、四月的第四个星期六)作为描述开始和结束时间的一部分。有些日期是明确的(例如10月31日)。我想存储描述性的和明确的值,以便在任何一年,我可以计算出准确的日期是什么时候。我做了一些搜索,但没找到。

这感觉很普通,一定是有人解决了。我也很好奇这些描述性的日期是否有合适的名称。

和标签一样,我的应用程序使用python+django。

谢谢!


如果您只有少数几个重复出现的描述性日期,那么最简单的事情就是创建一个字典,当它们出现在您的数据中时,可以将它们转换为您想要的明确日期。

但是,如果您有任意的描述性日期或其中的大量日期,那么,正如在注释中讨论的那样,NLP似乎是一种可行的方法。


答案是:玛雅

1
2
3
4
5
6
>>> import maya
>>> weird_day=maya.when('3rd Saturday in June')
>>> weird_day.rfc2822()
'Sun, 03 Jun 2018 00:00:00 GMT'
>>> weird_day.datetime(to_timezone='US/Pacific')
datetime.datetime(2018, 6, 2, 17, 0, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)