我正在实现一个自由文本搜索功能。用户可以输入任何关键字,例如日期字符串。
我希望它灵活:“2013 Oct”、“Oct 2013”、“2013-10”等都应该被识别。由于 App Engine 搜索 API 仅将日期格式识别为 YYYY-MM-DD,如果我得到“2013 Oct”,我需要将其翻译成“search_date >= 2013-10-01 and search_date <= 2013-10-31” .
我设法使用 dateutil.parser.parse(search_date_str),但问题是如果缺少任何日期组件,它将使用今天的数据。例如“2013 Oct”将被解析为“2013-10-27”。在这种情况下,我无法判断用户输入的是“2013 Oct 27”还是“2013 Oct 27”。按年份搜索相同...如果用户只想搜索“2013”,我应该能够将其翻译成 [2013-01-01, 2013-12-31] 而不是“2013-10-27”
我不确定我该怎么做?我在想是否需要任何正则表达式(我真的很穷……)