【问题标题】:Tuple or struct_time argument required error while using time.mktime(datetime.strptime(ti, '%m/%d/%Y %I:%M %p'))使用 time.mktime(datetime.strptime(ti, '%m/%d/%Y %I:%M %p')) 时需要元组或 struct_time 参数错误
【发布时间】:2021-05-12 13:32:52
【问题描述】:

我有一个代码 sn-p,如下所示:

Logger_time = [
    '6/30/2020 3:15 PM', '6/30/2020 3:16 PM',
    '6/30/2020 3:17 PM', '6/30/2020 3:18 PM',
    '6/30/2020 3:19 PM', '6/30/2020 3:20 PM',
    '6/30/2020 3:21 PM', '6/30/2020 3:22 PM',
    '6/30/2020 3:23 PM', '6/30/2020 3:24 PM',
    '6/30/2020 3:25 PM', '6/30/2020 3:26 PM',
    '6/30/2020 3:27 PM', '6/30/2020 3:28 PM',
    '6/30/2020 3:29 PM', '6/30/2020 3:30 PM',
    '6/30/2020 3:31 PM', '6/30/2020 3:32 PM',
    '6/30/2020 3:33 PM', '6/30/2020 3:34 PM']

newLoggertime = []

for ti in Logger_time:

    timestamp = time.mktime(datetime.strptime(ti, '%m/%d/%Y %I:%M %p'))
    newLoggertime.append(timestamp)

当我运行这段代码时,我突然开始收到这个错误

TypeError: Tuple or struct_time argument required

我似乎找不到这背后的原因。基本上,这段代码将特定格式的日期和时间转换为时间戳

【问题讨论】:

  • 这能回答你的问题吗? Convert string date to timestamp in Python
  • 没有,但我发现了问题所在:timestamp = time.mktime(time.strptime(ti, '%m/%d/%Y %I:%M %p'))跨度>
  • 好的,我承认那里的答案与您的用例不完全匹配,并且部分不再是最新的。无论如何,我认为@Kemp 的答案显示了一种更简单的方法:只需使用 datetime 对象的时间戳方法。

标签: python python-3.x datetime


【解决方案1】:

datetime.strptime 返回一个datetime 对象,而time.mktime 需要一个元组,如消息所述。

您的选择是在 datetime 对象上调用 timetuple 并将其传递给 time.mktime

timestamp = time.mktime(datetime.strptime(ti, '%m/%d/%Y %I:%M %p').timetuple())

或者在datetime对象上调用timestamp直接获取时间戳:

timestamp = datetime.strptime(ti, '%m/%d/%Y %I:%M %p').timestamp()

尽管注意与timestamp 相关的注释。

【讨论】:

  • 对。如果我使用时间而不是日期时间,它也可以。时间戳 = time.mktime(time.strptime(ti, '%m/%d/%Y %I:%M %p'))
猜你喜欢
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
相关资源
最近更新 更多