Skip to main content
 首页 » 编程设计

Python 存储和比较时间戳

2025年05月04日15unruledboy

根据我的研究,将我的时间戳存储为 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 use strptime for isoformat() 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)