2 Stimmen

Datumsformat in Django ändern

Ich versuche, die dieser eventCalendar in Django, die Daten in diesem Format speichert und anzeigt:

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

aber wenn ich Ereignisse in der Datenbank speichere, werden sie in diesem Format gespeichert:

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

daher werden Ereignisse aus der Datenbank aufgrund dieses Formats nicht im Kalender angezeigt. Wie kann ich dieses Format konvertieren? Ich habe etwas Ähnliches versucht:

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

aber ich erhalte immer wieder Fehlermeldungen wie diese:

'module' object has no attribute 'strptime'

Bearbeiten:Datum ist im String-Format

5voto

Chris Pratt Punkte 219403

strptime wird verwendet, um eine Zeichenkette in ein Datetime-Objekt zu zerlegen. Die Formatzeichenkette gibt an, wie die Zeichenkette geparst werden soll, no das Format, das die Datumsangabe haben soll, wenn sie später als Zeichenkette ausgegeben wird. Sie müssen also zunächst dafür sorgen, dass die Formatzeichenfolge mit dem Datumsformat der Eingabezeichenfolge übereinstimmt.

Sobald Sie eine Datumsangabe von strptime können Sie dann strftime mit Ihrer aktuellen Formatzeichenfolge, um sie in die gewünschte Anzeige zu bringen.

Allerdings scheint es, dass Sie ein Problem mit Ihren Importen haben. Der Fehler scheint darauf hinzuweisen, dass Sie getan haben:

import datetime
datetime.strptime(...)

Das ist falsch. strptime y strftime sind Methoden aus datetime.datetime Sie müssen also entweder Ihren Import wie folgt ändern:

from datetime import datetime

Oder ändern Sie Ihren Aufruf zu strptime mögen:

datetime.datetime.strptime(...)

UPDATE

Sie beginnen mit einer Zeichenkette wie Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time) . Python ist ziemlich genial, aber nicht allwissend; wenn Sie dies in eine datetime Sie müssen es erzählen wie . Das ist der Zweck des Formatstrings, den Sie an strptime . Sie müssen eine Formatzeichenkette erstellen, die Ihr aktuelles Datum und die Uhrzeit in der Datenbank darstellt (Übung links vom Leser). Stellen Sie sich das Ganze umgekehrt vor, so als wollten Sie tatsächlich eine datetime wie würden Sie das machen?

Dies bringt Ihnen eine datetime . Von dort aus können Sie nun das Format datetime als Zeichenkette mit strftime und übergeben Sie diesmal das gewünschte Format.

Der Prozess ist also:

  1. Erstellen Sie eine Formatzeichenfolge, die Ihre actuel String aus der Datenbank
  2. Verwenden Sie diese Formatzeichenfolge als Argument für strptime um eine datetime
  3. Erstellen Sie einen Format-String, der das gewünschte Format für das Datum angibt (bereits geschehen)
  4. Verwenden Sie diese Formatzeichenfolge als Argument für strftime zur Umwandlung der datetime aus Schritt 2 auf die gewünschte Zeichenfolge.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X