Das dateutil-Modul in Python verstehen (mit Beispielen)

不言
Freigeben: 2018-12-04 17:31:12
nach vorne
6209 Leute haben es durchsucht

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()
Nach dem Login kopieren

Die Ausgabe ist

2018-12-04T08:44:35.792445
Nach dem Login kopieren
  • 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))
Nach dem Login kopieren

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
Nach dem Login kopieren
  • Verwenden Sie dateutil, um die Zeichenfolge zu analysieren

from dateutil.parser import parse
timestamp = parse(now_date_str, fuzzy=True)
print(timestamp)
Nach dem Login kopieren

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) + '天')
Nach dem Login kopieren

kann direkt berechnen, wie viele Tage seit meiner Geburt vergangen sind, und die Ausgabe ist

我已经出生9758天
Nach dem Login kopieren

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'
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren
print(diff.years)
print(diff.months)
print(diff.days)
Nach dem Login kopieren
26
8
17
Nach dem Login kopieren
  • 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)))
Nach dem Login kopieren

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)]
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!