GAE Python:使用dateutil.parser按日期搜索

时间:2013-10-27 10:58:18

标签: python regex google-app-engine search python-dateutil

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

我希望它具有灵活性:“2013年10月”,“2013年10月”,“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年10月”将被解析为“2013-10-27”。在这种情况下,我无法判断用户是否在键入“2013年10月27日”或“2013年10月”。按年份搜索相同...如果用户只想搜索“2013”​​,我应该能够将其翻译成[2013-01-01,2013-12-31]而不是“2013-10-27”

我不知道该怎么做?我在想是否需要任何RegEx(我真的很穷......)

1 个答案:

答案 0 :(得分:1)

查看内置的 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模块已经处理了这个。