Chr*_*ten 5 python unix datetime
我有一个包含毫秒的unix时间戳列表 - 它们长13位.当我通过datetime.fromtimestamp(unix_timestamp)它运行时间戳时返回一个ValueError: Year Out of Range.当我从时间戳中删除最后三位数并通过相同的格式转换器运行时,它的工作完美.是否可以通过datetime的fromtimestamp方法运行包含毫秒的Unix时间戳而不会引发ValueError?我正在查看文档,并没有说明指定毫秒.
任何帮助都是极好的!
从文档中,您可以看到Python中的时间戳应该以秒为单位计算,而不是毫秒:http://docs.python.org/2/library/time.html#time.time
你可能已经过去了.
尽管如此,切掉时间戳的最后3位数字应该相当容易:
datetime.fromtimestamp(str(unix_timestamp)[0:-3])
Run Code Online (Sandbox Code Playgroud)
您可能还希望进行一些字符串长度检查以验证它们是13位数而不是仅仅10位:
if len(unix_timestamp) == 13:
unix_timestamp = float(str(unix_timestamp)[0:-3])
datetime.fromtimestamp(unix_timestamp)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在某些系统上,时间戳必须在1970年至2038年之间.这也可能导致a ValueError.
如果你想保持毫秒,你可以像这样存储它们:
milliseconds = 0
if len(unix_timestamp) == 13:
milliseconds = int(unix_timestamp[-3:])
unix_timestamp = float(unix_timestamp[0:-3])
the_date = datetime.fromtimestamp(unix_timestamp)
the_date += timedelta(milliseconds=milliseconds)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13005 次 |
| 最近记录: |