![]() |
1
3
您遇到的问题是,您的时间以纳秒为单位,而python datetime模块当前没有纳秒功能。 It is proposed for the future, however . 如果应用程序允许的话,最好的选择是将时间的分辨率降低到微秒。 以下是解决此问题的方法:
p1代表“2018-12-28t21:59:59” p2表示对datetime来说太大的秒的浮点部分(它是纳米精度),因此我们将其限制为6位数([:-1]删除z,而[:6]只限制为微秒)。这会将分辨率降低到微秒,而不进行取整——只会截断。如果需要舍入,可以将p2转换为float,舍入它,然后转换回str并截断结尾。 这将把时间的分辨率降低到日期时间可以处理的程度。这也假设您的秒数总是一个浮点数,并将以某个点结束。如果不是,您可能需要调整regex,但我试图尽可能清楚地说明这个示例。 我相信有一种更简单的方法可以做到这一点,但这一点先在我脑海中闪现,现在已经很晚了。我在考虑直接操作dt字符串,但我不确定9位数是否总是在小数部分。祝你好运! |
![]() |
2
0
试试这个
|
![]() |
3
0
允许的微秒范围是
你可以在这里了解更多 https://docs.python.org/2/library/datetime.html#datetime-objects 如果给定的参数超出这些范围,则会引发ValueError。 如果删除微秒的最后3个字符( 也就是说,它应该工作得很好。
一种解决方案是保持占用微秒子串,使其保持在最大值以下。我相信还有其他方法可以做到这一点。这正是我现在能想到的。
|