Heim > Artikel > Backend-Entwicklung > Das dateutil-Modul in Python verstehen (mit Beispielen)
Der Inhalt dieses Artikels befasst sich mit dem Verständnis des dateutil-Moduls in Python. Ich hoffe, dass es für Freunde in Not hilfreich ist du hilfst.
Ich bin kürzlich im Projektteam mit dem Python-Projekt in Kontakt gekommen und habe festgestellt, dass alle Zeitformate iso8601 verwenden. Meine Kollegen sagten beschönigend, es sei für die Internationalisierung des Projekts (tatsächlich ist die Nummer (Anzahl der Benutzer beträgt höchstens ein paar hundert Personen.) Nun, sie sind alle innerhalb des Unternehmens konzentriert. Wo bleibt die Internationalisierung? Also beschloss ich, das Zeitformat eingehend zu studieren und entdeckte das dateutil-Modul in Python.
DATETIME in das ISO8601-Format, verwenden Sie einfach die Methode isoformat(), um es zu konvertieren
now_time = datetime.now().isoformat()
Die Ausgabe ist
2018-12-04T08:44:35.792445
Parse DATETIME from ein String-Format (ohne dateutil-Modul)
now_date_str = datetime.now().isoformat().split('.')[0] my_format = '%Y-%m-%dT%H:%M:%S' print(datetime.strptime(now_date_str, my_format))
Dies ist die am häufigsten verwendete Methode in Python, um einen String in das Zeitformat zu konvertieren. Das Ausgabeergebnis ist
2018-12-04 08:44:35
Verwenden Sie dateutil, um die Zeichenfolge zu analysieren
from dateutil.parser import parse timestamp = parse(now_date_str, fuzzy=True) print(timestamp)
Das Ausgabeergebnis ist das gleiche wie oben, aber die Fuzzy-Funktion dieser Analysemethode ist erstaunlich und kann dem Zeitformat unscharf entsprechen. Wenn Sie interessiert sind, können Sie sich den Quellcode ansehen!
Berechnen Sie den Zeitunterschied
today = date.today() my_birthday = date(year=1992, month=3, day=17) print('我已经出生' + str((today - my_birthday).days) + '天')
kann direkt berechnen, wie viele Tage seit meiner Geburt vergangen sind, und die Ausgabe ist
我已经出生9758天
Aber wenn ich will: Was passiert, wenn man berechnet, wie alt ich bin, also wie viele Jahre seit meiner Geburt vergangen sind?
Traceback (most recent call last): 2018-12-04 08:57:08 File "F:/pythonProject/testcode/testDate.py", line 27, in <module> print((today-my_birthday).years) 2018-12-04 08:57:08 AttributeError: 'datetime.timedelta' object has no attribute 'years'
Leider wurde ein Fehler gemeldet, da es keine Methode gibt, um das Jahr und den Monat in Timedelta zu ermitteln. Daher verwenden wir weiterhin das dateutil-Modul.
from dateutil.relativedelta import relativedelta diff = relativedelta(today, my_birthday)
Wir können anhand der Ausgabe herausfinden, was wir tun kann die Mitte der beiden Daten abrufen. Der Unterschied beträgt Jahre, Monate und Tage
relativedelta(years=+26, months=+8, days=+17)
print(diff.years) print(diff.months) print(diff.days)
26 8 17
Holen Sie sich die Datumsliste. Wenn Sie die Daten von Dienstagen für fünf aufeinanderfolgende Wochen benötigen, ist dies möglich kann leicht durch dateutil erreicht werden
from dateutil.rrule import rrule, WEEKLY pp(list(rrule(WEEKLY, count=10, dtstart=next_tuesday)))
wird als
[datetime.datetime(2018, 12, 4, 8, 59, 6), datetime.datetime(2018, 12, 11, 8, 59, 6), datetime.datetime(2018, 12, 18, 8, 59, 6), datetime.datetime(2018, 12, 25, 8, 59, 6), datetime.datetime(2019, 1, 1, 8, 59, 6), datetime.datetime(2019, 1, 8, 8, 59, 6), datetime.datetime(2019, 1, 15, 8, 59, 6), datetime.datetime(2019, 1, 22, 8, 59, 6), datetime.datetime(2019, 1, 29, 8, 59, 6), datetime.datetime(2019, 2, 5, 8, 59, 6)]
ausgegeben. Hinweis: dtstart muss im Zeitformat
vorliegen
Das obige ist der detaillierte Inhalt vonDas dateutil-Modul in Python verstehen (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!