Dav*_*vid 5 python datetime epoch python-3.x
我.timestamp()在代码中两次使用该函数,将日期时间对象转换为纪元时间。第一次调用.timestamp()看起来像这样:
import datetime
origin_epoch = origin.timestamp()
Run Code Online (Sandbox Code Playgroud)
变量的内容origin和origin_epoch有:
同时,如果我尝试在代码的其他地方调用相同的方法
import datetime
print(datetime.datetime(1900, 1, 1, 19, 6, 28).timestamp())
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:OSError: [Errno 22] Invalid argument这是为什么?
编辑:此错误发生在 Windows 10 上。
1900 年在UNIX 纪元开始之前,即 1970 年,因此 返回的秒数timestamp必须为负数。准确地说,应该是负数,但显然,在你的情况下不是。看起来您的操作系统只是将 UNIX 时代开始之前的日期视为错误。
不过,这在 macOS 上对我来说很好用:
>>> datetime.datetime(1900, 1, 1, 19, 6, 28).timestamp()
-2208929029.0
Run Code Online (Sandbox Code Playgroud)
这似乎是一个已知问题,据说已经修复,但我还没有检查过。在我的 Windows (Windows 10, GMT+2) 上 1970-01-02 02:00:00 或之后的任何日期 3001-01-19 07:59:59 将给出OSError何时timestamp()被调用。
但是,这不会发生在偏移感知日期时间上,相反,它们被计算为(来自docs):
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()
Run Code Online (Sandbox Code Playgroud)
事实上,对于偏移天真的日期时间,可以简单地使用:
(dt - datetime(1970, 1, 1)).total_seconds()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |