我正在尝试构建一个应该处理自1830年以来获得的数据的程序。我创建了一个参考日期datetime(1970, 1, 1)
来计算timedelta。
timedelta运作良好,我得到一些正常的负数。当我想重新转换日期以使用datetime.datetime.utcfromtimestamp(t)
以适当的方式绘制数据时,会出现问题。所以这里“t”是否定的。
在互联网上寻找这个,我发现它是Windows下的Python错误或限制。我有3.5版本和Windows 10.我发现什么都没有帮助。所以,如果您知道使用熊猫图书馆或其他方式的解决方案,我将非常感激。
它返回给我的错误是:OSError: [Errno 22] Invalid argument
答案 0 :(得分:0)
这似乎确实是您计算机上的错误。在我的机器上(Ubuntu 17.10中的Python 3.6.3),负数正确地作为UTC时间戳。
作为解决方法,您可以尝试datetime.datetime.toordinal
和datetime.datetime.fromordinal
。这些序数从0001年1月1日开始,因此只能使用正数覆盖您的日期范围:
import datetime
start = datetime.datetime(1830, 1, 1)
event_1 = datetime.datetime(1835, 2, 10)
diff = (event_1 - start).days
# 1866
datetime.datetime.fromordinal(start.toordinal() + diff)
# datetime.datetime(1835, 2, 10, 0, 0)