2016-04-22 20 views
1

Bei der Verwendung vonParsing lange Zeichenfolge als Datetime

import datetime 
s = 'Sat Apr 23 2016 00:00:00 GMT+0100' 
print datetime.datetime.strptime(s, "%a %m %d %y %H:%M:%S GMT+0100") 

ich:

ValueError: time data 'Sat Apr 23 2016 00:00:00 GMT+0100' does not match format '%a %m %d %y %H:%M:%S GMT+0100'

Wie eine solche Zeichenfolge analysieren?

Hinweis: dateutil.parser.parse Verwendung funktionierte nicht: es produziert einige seltsame datetime Objekt, das konnte ich nicht subtrahieren mit einem anderen Datumzeit, das heißt d1 - d2 nicht funktionierte.

+0

Was meinst du, du könntest das Datetime-Objekt nicht von einem anderen subtrahieren? Was war die Fehlermeldung? Ich kann mir keinen Fehlermodus vorstellen, der Sie daran hindert, zwei Datumswerte zu subtrahieren. – Paul

+0

Ich empfehle nicht, den Dateutil-Parser für ein bekanntes Format zu verwenden, aber ich glaube, das Problem ist, dass der Parser Ihnen ein zeitzonenbewusstes Objekt gibt. Wenn Sie eine andere Datetime subtrahieren möchten, möchten Sie, dass beide entweder zeitzonenabhängig sind oder beide nativ sind. Am besten ist es, beide für absolute Zeitdifferenzen in UTC umzurechnen. – Paul

Antwort

3

nach this reference, das Format shoul d be "%a %b %d %Y %H:%M:%S GMT+0100"

2

Verwenden Sie stattdessen format string: "%a %b %d %Y %H:%M:%S GMT+0100".

machte ich zwei Änderungen:

  • ersetzt %m (Monat als mit Nullen aufgefüllt Dezimalzahl) mit %b (Monat als Name Gebietsschema der abgekürzt)
  • %y Ersetzte (Jahr ohne Jahrhundert als Null-gepolstert Dezimalzahl) mit %Y (Jahr mit Jahrhundert als Dezimalzahl)