我正在實現一個自由文本搜索功能。用戶可以輸入任何關鍵字,例如一個日期字符串..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