Heim  >  Artikel  >  Backend-Entwicklung  >  Das dateutil-Modul in Python verstehen (mit Beispielen)

Das dateutil-Modul in Python verstehen (mit Beispielen)

不言
不言nach vorne
2018-12-04 17:30:466248Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen