来自:“1小时前”,至:timedelta +精度 [英] From: "1 hour ago", To: timedelta + accuracy
本文介绍了来自:“1小时前”,至:timedelta +精度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,给定(字符串):
< 1分钟前'
可以返回(为伪代码道歉):
- datetime.now() - timedelta(1分钟),准确度(60秒)
- datetime.now ) - timedelta(7小时),准确度(1小时)
- datetime.now() - timedelta(5天),准确性(1天)
- datetime.now() - timedelta(2个月),准确度(1个月)
解决方案
你不能只是自己写一个简单的实现,如:
import datetime
def parsedatetime (str_val):
parts = str_val.split('')
如果len(parts)!= 3和parts [2]!='ago':
raise异常(can not parse%s%str_val)
try:
interval = int(parts [0])
除了ValueError,e:
raise异常(无法解析%s%str_val)
desc = parts [1]
如果desc中的'second':
td = datetime.timedelta(seconds = interval)
elif'min'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异常(cant parse%s%str_val)
answer = datetime。 datetime.now - td
返回答案
输入不显示 不同。
Is there a function to 'reverse humanize' times?
For example, given (strings):
- '1 minute ago'
- '7 hours ago'
- '5 days ago'
- '2 months ago'
Could return (apologies for the pseudo-code):
- datetime.now() - timedelta (1 minute), accuracy (60 seconds)
- datetime.now() - timedelta (7 hours), accuracy (1 hour)
- datetime.now() - timedelta (5 days), accuracy (1 day)
- datetime.now() - timedelta (2 months), accuracy (1 month)
解决方案
Can you not just write a simple implementation yourself such as:
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
The input doesn't look that varied.
这篇关于来自:“1小时前”,至:timedelta +精度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文