[英]datetime: force microsecond output in isoformat()
我刚刚发布了一个关于 Google Drive 日期格式的问题,我实际上找到了解决方案。 本质上,Google Drive 文档声明它需要以 RFC 3339 格式指定日期。 但是,它明确要求完整或长格式,即使毫秒为零也是如此。 有没有办法强制 datetime isoformat() 方法输出毫秒,即使为零? 我宁愿不使用 strftime 强制执行我自己的日期时间规范,但如果唯一的解决方案是使用以下 strftime 格式,那么就这样吧。
d.strftime("%Y-%m-%dT%H:%M:%S.%f+00:00")
这是 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;
}
看起来您无法做任何事情来强制输出字符串中的微秒。
如果您使用的是 Python 3.6+,则可以将timespec
参数传递给timespec
isoformat()
该函数最终调用_format_time
,您可以在其中查看参数的支持值:
specs = {
'hours': '{:02d}',
'minutes': '{:02d}:{:02d}',
'seconds': '{:02d}:{:02d}:{:02d}',
'milliseconds': '{:02d}:{:02d}:{:02d}.{:03d}',
'microseconds': '{:02d}:{:02d}:{:02d}.{:06d}'
}
即使特定部分为零,这也将强制呈现值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.