当前位置:  开发笔记 > 编程语言 > 正文

用于计算间隔的工具/库,例如"每月的最后一个星期四"

如何解决《用于计算间隔的工具/库,例如"每月的最后一个星期四"》经验,为你挑选了1个好方法。

我正在寻找一个命令行工具或某种python库(我可以将其包装),以便我可以计算指定的日期,如"每月的最后一个星期四".

即我想让人们像上面那样输入人类友好的文本,并且它应该能够计算任何月/年的任何日期/任何满足该条件的日期.

有什么建议?



1> Andrew Dalke..:

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之上编写自己的解析器,使用上述所有链接作为参考.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有