确保parsedatetime不解析无效的日期/时间字符串

时间:2013-03-10 21:27:26

标签: python parsing date time

在Ubuntu 12.04上使用Bear on Python 2.7的parsedatetime库。传入包含字符但没有有效日期(或时间)的字符串时,有时parse()函数会返回有效的日期/时间。

在提交问题48之后,看起来parsedatetime真的不想要一个没有日期/时间的字符串。

那么,想一想预处理器确定字符串是否包含有效日期的布尔值吗?

参考链接: https://github.com/bear/parsedatetime/ https://code.google.com/p/parsedatetime/issues/detail?id=48

注意:在第48期中,我不恰当地调用了parseDateText()。我已经确认了parse()存在相同的操作。

非常感谢任何帮助。

编辑:示例代码。

Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import parsedatetime as pdt
>>> c = pdt.Constants()
>>> c.BirthdayEpoc = 80
>>> p = pdt.Calendar(c)
>>> print p.parse("Mary had a little lamb.")
((2014, 3, 1, 20, 53, 56, 6, 69, 1), 1)
>>> print p.parse("foo bar")
(time.struct_time(tm_year=2013, tm_mon=3, tm_mday=10, tm_hour=20, tm_min=54, tm_sec=6, tm_wday=6, tm_yday=69, tm_isdst=1), 0)
>>> print p.parse("March 12th, 2013")
((2013, 3, 12, 20, 54, 34, 6, 69, 1), 1)
>>>

1 个答案:

答案 0 :(得分:1)

正如J.F.所提到的,正确的使用调用是parse()方法。 parse方法还具有返回包含两个项的元组的值:一个是确定的日期/时间值,另一个是显示是否找到任何日期/时间值的标志...

以下是返回标志值的细分:

  • 0 =完全没有解析
  • 1 =解析为日期
  • 2 =解析为时间
  • 3 =解析为日期时间

如果你从测试中得到的不是0,那你就发现了一个错误:/