3

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

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

2 回答 2

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;
}

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

于 2013-07-13T14:26:57.537 回答
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}'
}

即使特定部分为零,这也会强制呈现值

于 2021-02-22T14:09:22.473 回答