首页 > 解决方案 > 尝试获取 2 个时间戳之间的持续时间时遇到问题

问题描述

我正在尝试区分两个时间戳:16062947728891606295867656. 但我不断得到OSError: [Errno 22] Invalid argument

这是我的代码:

from datetime import datetime

def get_duration(start , end):
    fmt = '%Y-%m-%d %H:%M:%S'
    start = datetime.utcfromtimestamp(start).strftime(fmt)
    end = datetime.utcfromtimestamp(end).strftime(fmt)
    tstamp1 = datetime.strptime(start, fmt)
    tstamp2 = datetime.strptime(end, fmt)

    if tstamp1 > tstamp2:
        td = tstamp1 - tstamp2
    else:
        td = tstamp2 - tstamp1
    td_mins = int(round(td.total_seconds() / 60))

    print('The difference is approx. %s minutes' % td_mins)

get_duration(start = 1606294772889 , end = 1606295867656)

追溯:

Traceback (most recent call last):
  File "c:/Users/Yas_!_ru/Documents/GitHub/Mindustry-Ranked/webdriver.py", line 220, in <module>    
    Match.get_duration(start = 1606294772889 , end = 1606295867656)
  File "c:/Users/Yas_!_ru/Documents/GitHub/Mindustry-Ranked/webdriver.py", line 207, in get_duration
    start = datetime.utcfromtimestamp(start).strftime(fmt)
OSError: [Errno 22] Invalid argument

标签: pythondatetime

解决方案


这里的问题是您的时间戳似乎在秒的某个细分。大概是毫秒。

当我尝试你的代码时,我在评论中遇到了与 Tomerikoo 相同的错误,我将时间戳除以 1000,它给了我 182 分钟。

请务必检查时间戳的格式(毫秒、十分之一秒等),以便将它们转换回秒以使用 datetime 函数。


推荐阅读