datetime: принудительный микросекундный вывод в изоформате()


Я только что опубликовал вопрос о форматах дат на Google Диске, и я действительно нашел решение. По сути, документация Google Drive утверждает, что она требует указания дат в формате RFC 3339. Однако он явно требует полного или длинного формата, даже если миллисекунды равны нулю. Есть ли способ заставить метод datetime isoformat () выводить миллисекунды, даже если они равны нулю? Я бы предпочел не применять мою собственную спецификацию datetime, используя strftime, но если единственное решение стоит использовать следующий формат strftime, тогда так тому и быть.

d.strftime("%Y-%m-%dT%H:%M:%S.%f+00:00")
1   2   2013-07-13 16:55:42

1 ответ:

Вот реализация 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;
}

Не похоже, что вы можете что-то сделать, чтобы принудительно использовать микросекунды в выходной строке.