我正在寻找一个命令行工具或某种python库(我可以将其包装),以便我可以计算指定的日期,如"每月的最后一个星期四".
即我想让人们像上面那样输入人类友好的文本,并且它应该能够计算任何月/年的任何日期/任何满足该条件的日期.
有什么建议?
mxDateTime和Datejs以及webservice都不支持"本月的最后一个星期四".OP希望知道本月的最后一个星期四,比如一整年.
mxDateTime支持操作,但问题必须在Python代码中提出,而不是作为字符串.
我能想到的最好的是解析时间,但这并不支持"本月的最后一个星期四".它确实支持:
>>> 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服务都不支持此语法.)
编辑:嗯,好吧,虽然年和月都是对的,但这一天不是.2001年4月的最后一个星期四是27日.我想你将不得不在这里推出自己的解决方案.
它不支持:
>>> c.parseDateText("last thursday of 2010") Traceback (most recent call last): File "", line 1, in File "parsedatetime/parsedatetime.py", line 411, in parseDateText mth = self.ptc.MonthOffsets[mth] KeyError >>>
因此,一种可能性是文本替换:将字符串规范化为小写,单个空格等,然后对您感兴趣的每个月进行"月份"的字符串替换.您可能需要调整您找到的任何解决方案.例如,在他为在线音乐压延系统编写的一些旧的Skip Montanaro代码中:
# someone keeps submitting dates with september spelled wrong... 'septmber':9,
或者您在mxDateTime之上编写自己的解析器,使用上述所有链接作为参考.