是否有“逆转人性化”的功能?
例如,给定(字符串):
可以返回(为伪代码道歉):
答案 0 :(得分:1)
我一直在使用parsedatetime,这对我来说效果很好。主页列出了它可以处理的一些格式,例如:
我发现的主要缺点是它没有时区感。
如果它有价值,这里是我使用的包装器函数,无论输入字符串是相对的(如所有示例)还是固定的,它总是返回datetime
对象:
def parse_datetime(datetime_string):
datetime_parser = parsedatetime.Calendar(parsedatetime_consts.Constants())
timestamp = datetime_parser.parse(datetime_string)
if len(timestamp) == 2:
if timestamp[1] == 0:
raise ValueError(u'Failed to parse datetime: %s' % datetime_string)
timestamp = timestamp[0]
return datetime.fromtimestamp(time.mktime(timestamp))
答案 1 :(得分:1)
你能不能自己编写一个简单的实现,例如:
import datetime
def parsedatetime(str_val):
parts = str_val.split(' ')
if len(parts) != 3 and parts[2] != 'ago':
raise Exception("can't parse %s" % str_val)
try:
interval = int(parts[0])
except ValueError,e :
raise Exception("can't parse %s" % str_val)
desc = parts[1]
if 'second' in desc:
td = datetime.timedelta(seconds=interval)
elif 'minute' in desc:
td = datetime.timedelta(minutes=interval)
elif 'hour' in desc:
td = datetime.timedelta(minutes=interval*60)
elif 'day' in desc:
td = datetime.timedelta(days=interval)
else:
raise Exception("cant parse %s" % str_val)
answer = datetime.datetime.now - td
return answer
输入看起来 变化。