我正在寻找的是可以将“明天早上6点”或“中午的下一个模拟”转换为适当的日期时间对象。
答案 0 :(得分:45)
parsedatetime - 能够解析“人类可读”日期/时间表达式的Python模块。
#!/usr/bin/env python
from datetime import datetime
import parsedatetime as pdt # $ pip install parsedatetime
cal = pdt.Calendar()
now = datetime.now()
print("now: %s" % now)
for time_string in ["tomorrow at 6am", "next moday at noon",
"2 min ago", "3 weeks ago", "1 month ago"]:
print("%s:\t%s" % (time_string, cal.parseDT(time_string, now)[0]))
now: 2015-10-18 13:55:29.732131
tomorrow at 6am: 2015-10-19 06:00:00
next moday at noon: 2015-10-18 12:00:00
2 min ago: 2015-10-18 13:53:29
3 weeks ago: 2015-09-27 13:55:29
1 month ago: 2015-09-18 13:55:29
答案 1 :(得分:11)
从pyparsing wiki中了解您对this example的看法。它处理以下测试用例:
today
tomorrow
yesterday
in a couple of days
a couple of days from now
a couple of days from today
in a day
3 days ago
3 days from now
a day ago
now
10 minutes ago
10 minutes from now
in 10 minutes
in a minute
in a couple of minutes
20 seconds ago
in 30 seconds
20 seconds before noon
20 seconds before noon tomorrow
noon
midnight
noon tomorrow
6am tomorrow
0800 yesterday
12:15 AM today
3pm 2 days from today
a week from today
a week from now
3 weeks ago
noon next Sunday
noon Sunday
noon last Sunday