New*_*ler 0 python time datetime
我有以下目标:在 python 中将日期时间字符串转换为纳秒整数。
这是我在这个过程中发现的奇怪之处:
from datetime import datetime
datetime_str = '2015-01-08T08:23:21.301812Z'
nanoseconds = 1000000000
datetime_nanoseconds = int(datetime.strptime(datetime_str, '%Y-%m-%dT%H:%M:%S.%fZ').timestamp() * nanoseconds)
Run Code Online (Sandbox Code Playgroud)
当我打印时,datetime_nanoseconds我得到以下数字1420701801301811968。
第一个问题:最后三个数字968从何而来?我期待1420701801301812000
令人惊讶的是,如果我除以1420701801301811968 / nanoseconds我会1420701801.30181在几秒钟内得到我期望的值2,而这最后三位数字现在消失了。
第二个问题:为什么最后三位数字现在消失了?
我觉得python不适用于亚微秒时间......
任何有关该主题的帮助将不胜感激。
datetime.timestamp()返回一个浮点值。与 Python 的整数不同,浮点值没有无限精度。双精度浮点数大约有 17 位精度,而您已经超过了这个数字。所以,不要使用timestamp(). 获取 的整数值timestamp(),乘以 1000000,加上该microsecond值,再乘以 1000。
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |