Skip to main content
 首页 » 编程设计

python之GAE Python : Search by Date using dateutil. 解析器

2025年05月04日8bhlsheji

我正在实现自由文本搜索功能。用户可以输入任何关键字,例如日期字符串..

我希望它灵活:“2013 年 10 月”、“2013 年 10 月”、“2013 年 10 月”等都应该被识别。并且由于 App Engine 搜索 API 仅将日期格式识别为 YYYY-MM-DD,如果我得到“2013 年 10 月”,我需要将其转换为“search_date >= 2013-10-01 和 search_date <= 2013-10-31” .

我设法使用 dateutil.parser.parse(search_date_str),但问题是如果缺少任何日期组件,它将使用今天的数据。例如“2013 年 10 月”将被解析为“2013-10-27”。在那种情况下,我无法判断用户输入的是“2013 年 10 月 27 日”还是“2013 年 10 月”。按年份搜索也是如此...如果用户只想搜索“2013”​​,我应该可以将其翻译成 [2013-01-01、2013-12-31] 而不是“2013-10-27”

我不确定我应该怎么做?我在想是否需要任何正则表达式(我真的很差......)

请您参考如下方法:

看看内置的datetime 模块(http://docs.python.org/2/library/datetime.html),特别是datetime.strptime 函数:(http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)。这允许您从具有各种不同格式的字符串创建 datetime 对象。例如,您可以这样做:

theString = "2013-10" 
theDate = datetime.strptime(theString, "%Y-%m") 
theString2 = "2013 Oct" 
theDate2 = datetime.strptime(theString, "%Y %b") 

和其他各种组合。如果您限制允许的输入格式会容易得多,但无论如何这应该会让您的生活更轻松。您不需要编写任何正则表达式,因为 datetime 模块已经处理了这个。