根据我的研究,似乎存储我的时间戳为UTC(不是原生的,完整的,例如:2013-01-29 02:11:11.151996 + 00:00)是常态。
检索时间时,我想检查是否已经过了一个时间窗口。所以,
currentTime = datetime.utcnow()
storedTime = '2013-01-29 02:11:11.151996+00:00'
if (storedTime + 60) > currentTime:
print "60 or more has elapsed, do something again"
如何在UTC时间戳中添加任意数量的时间,即使它不是日期时间对象?或者,如何从UTC时间戳创建日期时间对象,然后向其添加arbirary时间。
我知道有一个我可以做的两个日期时间对象d1> D2。我只是在获取对象时遇到问题。
TIA!
编辑/更新:
谢谢大家。我决定做以下事情:(这是两个答案的组合,对不起,我只能接受一个!)
lastTime = dateutil.parser.parse(subDict['last'])
utcNow = datetime.datetime.utcnow().replace(tzinfo=tz.tzutc())
if lastTime + datetime.timedelta(seconds=subDict['interval']) < utcNow:
print "Time elapsed, do something!"
答案 0 :(得分:3)
将storedTime作为datetime
对象添加timedelta
。 strptime
用于将字符串解析为日期时间对象:
(请参阅链接了解格式字符串的详细信息)
currentTime = datetime.datetime.utcnow()
s = '2013-01-29 02:11:11.151996+00:00'
storedTime = datetime.datetime.strptime(s[:-6], "%Y-%m-%d %H:%M:%S.%f")
if storedTime + datetime.timedelta(minutes=60) > currentTime:
print "stuff..."
答案 1 :(得分:3)
对于解析方面,我喜欢使用dateutil模块。对我来说,它比提出的strptime解决方案更容易和更清洁(尽管这应该有效)。
import dateutil.parser
stored_time = dateutil.parser.parse('2013-01-29 02:11:11.151996+00:00')
但是,这很容易! :)你现在会遇到问题,试图比较本机和时区感知值。有几个SO问题涉及这个问题。您可能想要阅读此one here的答案。