2017-06-02 1 views
-3

Ich arbeite an einem Basisprogramm, das einen Prozess basierend auf einem in einer Textdatei gespeicherten Zeitstempel startet.Wie Zeit/Datum in Zeichenfolge-Form zu vergleichen?

Ich benutze das folgende Format Uhrzeit/Datum in die Textdatei zu speichern:

strftime("%Y/%m/%d %H:%M:%S",localtime()) 

Später werde ich die Datei lesen, und wenn die aktuelle Zeit> Zeitstempel + ein voreingestelltes Delta (in Minuten), dann Ich gehe zum nächsten Teil des Skripts.

Ich handle derzeit diese 100% von mir selbst und ich habe eine Funktion geschrieben, die die Zeichenfolge und das Delta in Minuten, Stunden, Tage, Monate und Jahre teilt und addiert sie zusammen.

Ich frage mich, gibt es einen schnelleren Weg, dies zu tun? Bietet Python eine einfachere Lösung, die ich vermisst habe?

Ich bin nicht an die aktuelle Formatierung von Uhrzeit und Datum gebunden und ich bin bereit, es anders zu formatieren, solange die Funktionalität vorhanden ist.

Antwort

1

Strftime eine entgegengesetzte, die Strings in Datetime-Objekte umwandelt - strptime, so in Ihrem Fall, dass Sie dies tun können:

from datetime import datetime, timedelta 
    date_from_file = datetime.strptime(string_from_file, "%Y/%m/%d %H:%M:%S") 

Beachten Sie auch, dass ich auch „Timedelta“ importiert, die Sie so verwenden können, :

if datetime.now() > date_from_file + timedelta(hours=3): 
     do_something() 

die überprüfen wird, ob die aktuelle Zeit größer als die Zeit 3 ​​Stunden nach der Zeit in der Datei ist. natürlich können Sie

ändern
timedelta(hours=3) 

zu

timedelta(minutes=15) 

oder was auch immer Sie brauchen ...

Ich empfehle mehr auf das Lernen Timedelta, wenn Sie etwas brauchen mehr: https://docs.python.org/2/library/datetime.html