Javascript Datums-string zu python datetime-Objekt

Den aktuellen datetime übergeben wird, über einen ajax-request zu einem django-backend, wo es in der Datenbank gespeichert werden. Zum speichern in der Datenbank, das Datum muss zuerst umgewandelt werden in ein datetime Objekt, das getan werden kann für ein Datum im UTC-format (ZB. Sun, 04 Sep 2016 07:13:06 GMT) einfach durch die folgende Anweisung:

>>> from datetime import datetime
>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT", "%a, %d %b %Y %H:%M:%S %Z")

Jedoch in einer Methode, es gibt keine Erhaltung der Benutzer-Zeitzone.

Javascript Date Konstruktor aufrufen, d.h. new Date() gibt ein Datum im folgenden format:

Sun Sep 04 2016 12:38:43 GMT+0530 (IST)

wodurch ein Fehler bei der Umwandlung in ein datetime-Objekt.

>>> datetime.strptime("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)", "%a, %d %b %Y %H:%M:%S %Z")

ValueError: time data 'Sun Sep 04 2016 12:46:07 GMT+0530 (IST)' does not match format '%a, %d %b %Y %H:%M:%S %Z'

1), Wie dieses problem zu beheben?
2) gibt es eine bessere Möglichkeit, sich ihm zu nähern?

InformationsquelleAutor dorado | 2016-09-04



2 Replies
  1. 5

    Können Sie python ‚ s dateutil – Modul analysieren Sie Ihren Termin.

    from dateutil import parser
    parser.parse("Sun, 04 Sep 2016 07:13:06 GMT+0530 (IST)")

    Gibt es die Ausgabe als ein datetime-Objekt:

    datetime.datetime(2016, 9, 4, 7, 13, 6, tzinfo=tzoffset(u'IST', -19800))
  2. 0

    Ihre erste problem ist, dass die Eingabe ein anderes format hat. Aber leider für Sie, das ist nicht Ihr einziges problem und es würde nicht funktionieren, selbst wenn Sie Feste.

    Die Wahrheit ist, dass sogar das erste format würde fehlschlagen mit einer unterschiedlichen Zeitzone:

    datetime.strptime("Sun, 04 Sep 2016 07:13:06 IST", "%a, %d %b %Y %H:%M:%S %Z")

    schlägt fehl mit:

    ValueError: time data 'Sun, 04 Sep 2016 07:13:06 IST' does not match format '%a, %d %b %Y %H:%M:%S %Z'

    strptime einfach nicht gut genug ist für das handling von Zeitzonen.

    Überprüfen Sie diese Antworten für Ihre Optionen:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.