Maison > Article > développement back-end > Comprendre le module dateutil en Python (avec exemples)
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()
La sortie est
2018-12-04T08:44:35.792445
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))
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
Utilisez dateutil pour analyser la chaîne
from dateutil.parser import parse timestamp = parse(now_date_str, fuzzy=True) print(timestamp)
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) + '天')
Vous pouvez calculer directement combien de jours depuis ma naissance, et le résultat est
我已经出生9758天
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'
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)
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)
print(diff.years) print(diff.months) print(diff.days)
26 8 17
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)))
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)]
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!