изменить формат даты в Django - PullRequest
2 голосов
/ 27 февраля 2012

Я пытаюсь использовать this eventCalendar в Django, который сохраняет и показывает даты в следующем формате:

2012-02-27T13:15:00.000+10:00

, но когда я сохраняю события в базе данных, онисохраняется в следующем формате:

Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time)

, поэтому события из базы данных не будут отображаться в календаре из-за этого формата.Как я могу конвертировать этот формат?Я пробовал что-то вроде этого:

datetime.strptime(mydatetime, "%Y-%m-%dT%H:%M:%S+0000")

, но я постоянно получаю ошибки вроде этого:

'module' object has no attribute 'strptime'

Редактировать: дата в строковом формате

1 Ответ

5 голосов
/ 27 февраля 2012

strptime используется для анализа строки в объекте datetime.Строка формата указывает, как анализировать строку, , а не формат, который вы хотите использовать для даты и времени, когда в дальнейшем будет печататься как строка.Итак, во-первых, вам нужно, чтобы строка формата соответствовала формату даты входной строки.

Как только вы получили дату / время от strptime, вы можете затем использовать strftime с вашей текущей строкой формата дляпоместите его на нужный экран.

Тем не менее, похоже, у вас проблемы с импортом.Кажется, ошибка указывает на то, что вы сделали:

import datetime
datetime.strptime(...)

Это неверно.strptime и strftime являются методами выключения datetime.datetime, поэтому вам нужно либо изменить свой импорт, например:

from datetime import datetime

, либо изменить свой вызов на strptime, например:

datetime.datetime.strptime(...)

ОБНОВЛЕНИЕ

Вы начинаете со строки, как Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time).Python довольно крутой, но он не всезнающий;если вы хотите преобразовать это в datetime, вы должны указать как .Это цель строки формата, которую вы передаете strptime.Вам нужно создать строку формата, которая представляет вашу текущую строку, дату и время, представленную в базе данных (упражнение оставлено для чтения).Подумайте обратным образом, в соответствии с тем, что вы хотели на самом деле представить как datetime, как бы вы это сделали.

Это даст вам datetime.Оттуда вы можете теперь отформатировать datetime как строку с strftime, передавая фактический формат, который вы хотите, на этот раз.

Таким образом, процесс выглядит так:

  1. Создатьстрока формата, представляющая вашу текущую строку из базы данных
  2. Используйте эту строку формата в качестве аргумента для strptime, чтобы получить datetime
  3. Создать строку формата, представляющуюформат, в котором вы хотите, чтобы дата была (уже сделана)
  4. Используйте эту строку формата в качестве аргумента для strftime, чтобы преобразовать datetime из шага 2 в желаемую строку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...