Parse Django поле даты и времени - PullRequest
       8

Parse Django поле даты и времени

0 голосов
/ 04 сентября 2018

У меня проблема с сериализацией поля datetime. Я использую serializers.DateTimeField из django rest framework, и я получаю 400 статус, когда пытаюсь отправить 2018-09-04T00:00:00+0100 в качестве параметра запроса. Если смещение часового пояса отрицательно - оно работает идеально.

Вот ошибка django:

"date": [
        "Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]."
    ]

Также я нашел все форматы ввода для поля даты и времени, и я уверен, что мое время и дата действительны

print(formats.get_format_lazy('DATETIME_INPUT_FORMATS'))
['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y', '%Y-%m-%dT%H:%M:%S.%fZ', '%Y-%m-%dT%H:%M:%S.%f%z', '%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S%z', '%Y-%m-%dT%H:%M:%S.%fZ', '%Y-%m-%dT%H:%M:%S.%f%z', '%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S%z', '%Y-%m-%dT%H:%M:%S.%fZ', '%Y-%m-%dT%H:%M:%S.%f%z', '%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S%z', '%Y-%m-%dT%H:%M:%S.%fZ', '%Y-%m-%dT%H:%M:%S.%f%z', '%Y-%m-%dT%H:%M:%SZ', '%Y-%m-%dT%H:%M:%S%z']

1 Ответ

0 голосов
/ 04 сентября 2018

пример, который вы приводите, отсутствует :, что не позволяет ему соответствовать формату iso8601

2018-09-04T00:00:00+0100 должно быть 2018-09-04T00:00:00+01:00 - незначительные детали, но значимые.

Если вы прочитали документы , единственным форматом, предоставленным сериализатором, является 'iso-8601'

Все форматы, которые вы упомянули выше, не являются частью форматов ввода. Убедитесь, что у вас есть правильный формат в вашем списке input_formats в вашем serializers.DateTimeField

Подпись: DateTimeField (format = api_settings.DATETIME_FORMAT, input_formats = None)

input_formats - список строк, представляющих форматы ввода, которые могут использоваться для анализа даты. Если не указано иное, будет использоваться параметр DATETIME_INPUT_FORMATS, который по умолчанию равен ['iso-8601'].

Строки формата могут быть либо форматами Python strftime, которые явно указывают формат, либо специальной строкой 'iso-8601', которая указывает, что следует использовать даты и время в стиле ISO 8601. (например, «2013-01-29T12: 34: 56.000000Z»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...