Python存储和比较时间戳

时间:2013-01-29 04:29:31

标签: python datetime utc timestamp

根据我的研究,似乎存储我的时间戳为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!"

2 个答案:

答案 0 :(得分:3)

将storedTime作为datetime对象添加timedeltastrptime用于将字符串解析为日期时间对象:

(请参阅链接了解格式字符串的详细信息)

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的答案。