Python datetime:isoformat()中的强制微秒输出

Python datetime:isoformat()中的强制微秒输出,python,datetime,Python,Datetime,我刚刚发布了一个关于GoogleDrive日期格式的问题,实际上我找到了一个解决方案。从本质上讲,Google Drive文档声明它要求以RFC 3339格式指定日期。但是,即使毫秒为零,它也需要显式地使用完整或长格式。有没有办法强制datetime isoformat()方法输出毫秒,即使是零?我不希望使用strftime强制执行我自己的datetime规范,但是如果唯一的解决方案是使用以下strftime格式,那就这样吧 d.strftime("%Y-%m-%dT%H:%M:%S.%f+00

我刚刚发布了一个关于GoogleDrive日期格式的问题,实际上我找到了一个解决方案。从本质上讲,Google Drive文档声明它要求以RFC 3339格式指定日期。但是,即使毫秒为零,它也需要显式地使用完整或长格式。有没有办法强制datetime isoformat()方法输出毫秒,即使是零?我不希望使用strftime强制执行我自己的datetime规范,但是如果唯一的解决方案是使用以下strftime格式,那就这样吧

d.strftime("%Y-%m-%dT%H:%M:%S.%f+00:00")

以下是datetime isoformat()的实现:


看起来您无法在输出字符串中强制执行微秒。

如果您使用的是Python 3.6+,则可以将
timespec
参数传递给
isoformat()

该函数最后调用
\u format\u time
,您可以在其中看到参数的支持值:

specs = {
    'hours': '{:02d}',
    'minutes': '{:02d}:{:02d}',
    'seconds': '{:02d}:{:02d}:{:02d}',
    'milliseconds': '{:02d}:{:02d}:{:02d}.{:03d}',
    'microseconds': '{:02d}:{:02d}:{:02d}.{:06d}'
}

这将强制渲染该值,即使特定部分为零

现在isoformat有一个timespec参数-看起来它将在3.6中着陆。此处讨论:在此处提交:
specs = {
    'hours': '{:02d}',
    'minutes': '{:02d}:{:02d}',
    'seconds': '{:02d}:{:02d}:{:02d}',
    'milliseconds': '{:02d}:{:02d}:{:02d}.{:03d}',
    'microseconds': '{:02d}:{:02d}:{:02d}.{:06d}'
}