Python 3.x Python 3将ISO 8601转换为毫秒

Python 3.x Python 3将ISO 8601转换为毫秒,python-3.x,python-dateutil,Python 3.x,Python Dateutil,我从API GET请求2020-02-25T00:02:43.000Z接收到ISO 8601格式。我试图将其转换为毫秒,因为在API POST调用的有效负载中需要这种格式。我已经成功地在Linux系统上运行了代码,但是我从Windows获得了ValueError:无效的格式字符串 从Linux: 返回 '1582588963000' 从Windows: 有办法解决这个问题吗?这在Windows中不起作用的原因是strftime函数调用本机操作系统的C库,而Unix滴答声(即1970年1月1日午

我从API GET请求2020-02-25T00:02:43.000Z接收到ISO 8601格式。我试图将其转换为毫秒,因为在API POST调用的有效负载中需要这种格式。我已经成功地在Linux系统上运行了代码,但是我从Windows获得了ValueError:无效的格式字符串

从Linux:

返回

'1582588963000'
从Windows:


有办法解决这个问题吗?

这在Windows中不起作用的原因是strftime函数调用本机操作系统的C库,而Unix滴答声(即1970年1月1日午夜后的秒数)不是Windows操作系统的一部分

如果你想得到自1970年1月1日以来的秒数,那么你可以简单地减去原始日期,然后从时间增量中得到总秒数。Python简化了这一过程,并提供了一个时间戳函数,该函数可以为您进行计算,并将子秒作为十进制组件

import dateutil.parser

time = "2020-02-25T00:02:43.000Z"
parsed_time = dateutil.parser.parse(time)
timestamp = parsed_time.timestamp() * 1000
return str(int(timestamp))

这在Windows中不起作用的原因是strftime函数调用本机操作系统的C库,而Unix滴答声(即1970年1月1日午夜后的秒数)不是Windows操作系统的一部分

如果你想得到自1970年1月1日以来的秒数,那么你可以简单地减去原始日期,然后从时间增量中得到总秒数。Python简化了这一过程,并提供了一个时间戳函数,该函数可以为您进行计算,并将子秒作为十进制组件

import dateutil.parser

time = "2020-02-25T00:02:43.000Z"
parsed_time = dateutil.parser.parse(time)
timestamp = parsed_time.timestamp() * 1000
return str(int(timestamp))

以下是在windows上工作的内容列表,实际上%s不存在。

我总是使用datetime,如果您有机会使用它,这里是一个示例:

datetime.datetime(2020,2,25,0,2,43).timestamp()


以下是在windows上工作的内容列表,实际上%s不存在。

我总是使用datetime,如果您有机会使用它,这里是一个示例:

datetime.datetime(2020,2,25,0,2,43).timestamp()

import datetime
time = "2020-02-25T00:02:43.000Z"
date = datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S.%fZ')
timestamp = str((date - datetime.datetime(1970, 1, 1)).total_seconds()*1000)
print(timestamp[:-2])