【问题标题】:Having trouble trying to get the duration between 2 timestamps尝试获取 2 个时间戳之间的持续时间时遇到问题
【发布时间】:2020-11-25 10:10:39
【问题描述】:

我正在尝试区分两个时间戳: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

【问题讨论】:

  • 我从同一行收到ValueError: year 52871 is out of range...
  • 好像输入太大了,见:stackoverflow.com/questions/46133223/…
  • 也许您可以尝试删除斜线 60 计算,如果更大的计算以降低复杂性。webdriver 来自哪里?

标签: python datetime


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2022-01-22
    • 1970-01-01
    • 2015-04-20
    • 2021-01-03
    • 2015-03-30
    相关资源
    最近更新 更多