【问题标题】:OSError: [Errno 22] Invalid argument when using datetime.strptimeOSError: [Errno 22] 使用 datetime.strptime 时参数无效
【发布时间】:2022-06-18 01:01:52
【问题描述】:

我测试了以下代码:

date_string = "16:30"
date = datetime.strptime(date_string, "%H:%M")
timestamp = datetime.timestamp(date)
print(timestamp)

但我得到了错误:

OSError: [Errno 22] 无效参数

如何获取时间的时间戳?

【问题讨论】:

  • 我无法重现该错误。请添加完整的回溯。
  • 您的代码是否包含 from datetime import datetime ?如果是这样,我无法在 macOS 上重现它

标签: python datetime timestamp


【解决方案1】:

如果你让 datetime 对象知道,你的代码就可以工作,即设置一个时区:

from datetime import datetime, timezone

date_string = "16:30"
date = datetime.strptime(date_string, "%H:%M").replace(tzinfo=timezone.utc)

print(date)
# 1900-01-01 16:30:00+00:00

print(date.timestamp())
# -2208929400.0

(在 Windows 10、Python 3.9.12 上测试)

【讨论】:

    【解决方案2】:

    错误是timestamp() 没有参数(这正是堆栈跟踪告诉您的内容:Invalid argument

    我认为你想要date.timestamp(),所以来自date 变量的方法(datedatetime.datetime 实例,而不是datetime.date 类)。

    但我认为您将日期时间导入为from datetime import datetime。不要做。它只会让您和您的编辑器感到困惑,因此您可能会从 IDE 中获得无效的建议。如果你使用datetime,也不要使用变量名date,而且一般来说,永远不要使用如此通用的变量名。它只会混淆一切。更喜欢更好的变量名,例如this_datemy_date (所以没有人会与 datetime.date 混淆,特别是如果将来你需要那个类)。但最好设置一个更好的名字。

    【讨论】:

      猜你喜欢
      • 2019-04-27
      • 1970-01-01
      • 2021-02-21
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 2021-02-10
      • 2021-11-06
      相关资源
      最近更新 更多