我刚刚发布了一个关于Google云端硬盘日期格式的问题,我实际上找到了解决方案。从本质上讲,Google Drive文档指出它需要以RFC 3339格式指定日期。但是,它需要显式的全格式或长格式,即使毫秒为零。有没有办法强制datetime isoformat()方法输出毫秒,即使是零?我宁愿不使用strftime强制执行我自己的日期时间规范,但如果唯一的解决方案是使用以下strftime格式,那么就这样吧。
d.strftime("%Y-%m-%dT%H:%M:%S.%f+00:00")
答案 0 :(得分:2)
这是datetime isoformat()的实现:
static char *
isoformat_time(PyDateTime_DateTime *dt, char buffer[], int bufflen)
{
int x;
int us = DATE_GET_MICROSECOND(dt);
x = PyOS_snprintf(buffer, bufflen,
"%02d:%02d:%02d",
DATE_GET_HOUR(dt),
DATE_GET_MINUTE(dt),
DATE_GET_SECOND(dt));
assert(bufflen >= x);
if (us)
x += PyOS_snprintf(buffer + x, bufflen - x, ".%06d", us);
assert(bufflen >= x);
return buffer + x;
}
看起来你不能做任何事情来强制输出字符串中的微秒。
答案 1 :(得分:1)
如果您使用的是 Python 3.6+,则可以将 timespec
参数传递给 isoformat()
该函数最终调用 _format_time
,您可以在其中看到参数支持的值:
specs = {
'hours': '{:02d}',
'minutes': '{:02d}:{:02d}',
'seconds': '{:02d}:{:02d}:{:02d}',
'milliseconds': '{:02d}:{:02d}:{:02d}.{:03d}',
'microseconds': '{:02d}:{:02d}:{:02d}.{:06d}'
}
即使特定部分为零,这也会强制渲染值