根据我的研究,将我的时间戳存储为 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 时间戳创建日期时间对象,然后向其添加任意时间。
我知道一旦我有两个 datetime 对象我就可以做 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!"
请您参考如下方法:
将 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..."
NOTE: from 3.7
.fromisoformat()was added, so there is no need to usestrptimeforisoformat()datetime strings.
>>> datetime.datetime.fromisoformat('2013-01-29 02:11:11.151996+00:00')
datetime.datetime(2013, 1, 29, 2, 11, 11, 151996, tzinfo=datetime.timezone.utc)
