2016-10-16 6 views
1

Ich versuche, Django dateutil.pareser.parse() zu verwenden, um das Datum '2016: 09: 24 17:08:45' zu '2016-09-24 17 zu ändern : 08: 45 '. Aber wenn ich den folgenden Code verwenden:Django dateutil analysiert das Datum auf das heutige Datum

the_timestamp = self.request.query_params.get('timestamp',0) # = '2016:09:24 17:08:45' 
the_parsed_timestamp = dateutil.parser.parse(the_timestamp) 

ich das Ergebnis the_parsed_timestamp = ‚2016.10.16 17.08.45‘. 2016-10-16 ist das heutige Datum.

Warum ersetzt dateutil.parser.parse das Datum durch das heutige Datum (und lässt den Zeitteil in Ruhe)?

+0

Sie wissen, dass es immer im Format "% Y:% m:% d% H:% M: S"? Verwenden Sie in diesem Fall nicht "dateutil.parser", sondern "datetime.strptime". Trotzdem scheint dies ein Fehler zu sein. Sie sollten dies auf [dateutils issue tracker] (https://github.com/dateutil/dateutil/issues) melden - selbst wenn dieses Format nicht unterstützt wird, sollte es nicht automatisch fehlschlagen. – Paul

+0

Übrigens vermute ich, dass es "2016: 09: 24" als "% H:% M:% S" interpretiert und die Art wie "dateutil" funktioniert, wenn Sie 2 HMS-Drillinge geben eine Zeile, die zweite überschreibt die erste Zeile. Wenn Sie "2016: 09: 24" selbst an den Parser übergeben, wird ein Fehler ausgegeben, weil "2016" zu groß ist. Sie können also einfach "17:08:45" übergeben. – Paul

+0

Oh ok , also ist Parse nicht schlau genug für dieses Format? Mein Problem ist, dass ich nicht sicher bin, in welches Format die Datetime kommen wird, also hoffte ich, dass ich ein cleveres Dienstprogramm wie dateutil parse verwenden könnte, um das für mich zu sortieren. Gibt es einen Alernativen zu dateutil? –

Antwort

0

Sie haben das falsche Datumsformat. Es sollte sein:

2016-09-24 

nicht
2016:09:24 
+0

Ja, ich weiß. Das Datum, das hereinkommt, ist im Format 2016: 09: 24 Ich versuche, die Dateutil-Analysefunktion zu verwenden, um es in das korrekte Format umzuwandeln. Es scheint das zu tun, außer das Datum zu ändern! –

+0

@BillNoble Ist das Format konsistent? Vielleicht können Sie einfach 'datetime.datetime.strptime '(' 2016: 09: 24 17:08:45 ','% Y:% m:% d% H:% M:% S ') verwenden. – mariodev

+0

Das funktioniert in diesem speziellen Fall, aber das Datumsformat ist nicht konsistent –

Verwandte Themen