Comprendre le module dateutil en Python (avec exemples)

不言
Libérer: 2018-12-04 17:31:12
avant
6209 Les gens l'ont consulté

Le contenu de cet article porte sur la compréhension du module dateutil en Python (avec des exemples). Il a une certaine valeur de référence. J'espère qu'il sera utile. vous. aider.

Je suis récemment entré en contact avec le projet python dans l'équipe du projet et j'ai découvert que tous les formats d'heure utilisent iso8601. Mes collègues ont dit par euphémisme que c'était pour l'internationalisation du projet (en fait, le nombre). des utilisateurs, c'est au maximum quelques centaines de personnes) Bon, ils sont tous concentrés au sein de l'entreprise, où est l'internationalisation Hahahaha !) J'ai donc décidé de faire une étude approfondie du format de l'heure et j'ai découvert le module dateutil en python.

DATETIME au format ISO8601, utilisez simplement la méthode isoformat() pour convertir

now_time = datetime.now().isoformat()
Copier après la connexion

La sortie est

2018-12-04T08:44:35.792445
Copier après la connexion
  • de Analyse de chaîne au format DATETIME (sans module dateutil)

now_date_str = datetime.now().isoformat().split('.')[0]
my_format = '%Y-%m-%dT%H:%M:%S'
print(datetime.strptime(now_date_str, my_format))
Copier après la connexion

Il s'agit de la méthode la plus couramment utilisée en python pour convertir une chaîne au format horaire, et le résultat de sortie est

2018-12-04 08:44:35
Copier après la connexion
  • Utilisez dateutil pour analyser la chaîne

from dateutil.parser import parse
timestamp = parse(now_date_str, fuzzy=True)
print(timestamp)
Copier après la connexion

Le résultat de sortie est le même que ci-dessus, mais le flou dans cette méthode d'analyse est magique et peut correspondre de manière floue au format de l'heure. Si vous êtes intéressé, vous pouvez jeter un œil au code source !

  • Calculer le décalage horaire

today = date.today()
my_birthday = date(year=1992, month=3, day=17)
print('我已经出生' + str((today - my_birthday).days) + '天')
Copier après la connexion

Vous pouvez calculer directement combien de jours depuis ma naissance, et le résultat est

我已经出生9758天
Copier après la connexion

Mais que se passe-t-il si je veux calculer quel âge j'ai, c'est-à-dire combien d'années depuis ma naissance ?

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'
Copier après la connexion

Malheureusement, une erreur a été signalée car il n'y a aucun moyen d'obtenir l'année et le mois en timedelta, nous continuons donc à utiliser le module dateutil

from dateutil.relativedelta import relativedelta
diff = relativedelta(today, my_birthday)
Copier après la connexion

Vous pouvez le découvrir grâce à la sortie, nous pouvons l'obtenir La différence en années, mois et jours entre deux dates

relativedelta(years=+26, months=+8, days=+17)
Copier après la connexion
print(diff.years)
print(diff.months)
print(diff.days)
Copier après la connexion
26
8
17
Copier après la connexion
  • Obtenez la liste des dates Si vous avez besoin d'obtenir. les dates de cinq mardis consécutifs, pass dateutil peut facilement implémenter

from dateutil.rrule import rrule, WEEKLY
pp(list(rrule(WEEKLY, count=10, dtstart=next_tuesday)))
Copier après la connexion

et la sortie est

[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)]
Copier après la connexion

Remarque : dtstart doit être au format heure

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!