mxDateTime 和 Datejs 以及该 Web 服务都不支持“该月的最后一个星期四”。 OP 希望了解该月(例如全年)的所有最后星期四。
mxDateTime 支持这些操作,但问题必须以 Python 代码提出,而不是作为字符串。
我能想到的最好的是解析日期时间 http://code.google.com/p/parsedatetime/,但这不支持“该月的最后一个星期四”。它确实支持:
>>> c.parseDateText("last thursday of april 2001")
(2001, 4, 20, 13, 55, 58, 3, 64, 0)
>>> c.parseDateText("last thursday of may 2001")
(2001, 5, 20, 13, 56, 3, 3, 64, 0)
>>> c.parseDateText("last thursday of may 2010")
(2010, 5, 20, 13, 56, 7, 3, 64, 0)
>>>
(请注意,DateJS 和该 Web 服务都不支持此语法。)
EDIT:嗯,好的,但是虽然年份和月份是正确的,但日期却不对。 2001年4月的最后一个星期四是27号。我认为您必须在这里推出自己的解决方案。
它不支持:
>>> c.parseDateText("last thursday of 2010")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "parsedatetime/parsedatetime.py", line 411, in parseDateText
mth = self.ptc.MonthOffsets[mth]
KeyError
>>>
因此,一种可能性是文本替换:将字符串标准化为小写、单个空格等。然后对您感兴趣的每个月份进行“月份”的字符串替换。您可能必须调整您找到的任何解决方案。例如,在某些Skip Montanaro 的旧代码 http://web.archive.org/web/20050309211440/manatee.mojam.com/~skip/python/dates.py他为在线音乐日历系统编写了以下内容:
# someone keeps submitting dates with september spelled wrong...
'septmber':9,
或者您可以使用上述所有链接作为参考,在 mxDateTime 之上编写自己的解析器。