Maison >développement back-end >Tutoriel Python >Comprendre le module dateutil en Python (avec exemples)

Comprendre le module dateutil en Python (avec exemples)

不言
不言avant
2018-12-04 17:30:466250parcourir

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer