我正在实现一个自由文本搜索功能。用户可以输入任何关键字,例如一个日期字符串..GAE Python:使用dateutil.parser按日期搜索
我希望它很灵活:“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”
我不知道我该怎么做?如果需要任何的正则表达式我想(我在那个真可怜......)
所以我查看了dateutil.parser.parse函数的代码。它实际上将今天设置为默认日期,并且如果它检测到年,月,日,小时,分钟和秒数据,只需使用default.replace()更新search_date ...所以我稍微修改它,如果日分量是被替换,我设置parse_level是“日”,如果不是,然后检查“月”“年”..这不是很好..但至少适用于我.. – xialin