Récapitulatif du traitement de la date en Python (datetime et dateutil)

Bonjour, c'est An'nin. Lorsque je suivais le cours "Travailler avec les dates et les heures en Python" à DataCamp, il y avait beaucoup de traitement de date que je n'étais pas familier avec (je n'utilisais que pd.to_datetime en premier lieu ...), "C'est la fin du cours. Je l'oublierai bientôt! C'est dangereux! », J'aimerais donc le résumer au lieu d'un mémorandum.

module datetime

Module de manipulation de la date et de l'heure ・ Classe Aware: données contenant des informations sur l'ajustement de l'heure telles que l'heure d'été et le fuseau horaire ・ Classe naïve: aucune donnée


Basique
datetime.datetime (objet datetime) </ b> ・ ・ ・ Année, mois, jour, heure, minute, seconde (un objet contenant des informations sur l'objet date et l'objet heure)

from datetime import datetime
today = datetime(2020, 6, 1, 15, 30, 00)
print(today)

Output: 2020-06-01 15:30:00 

datetime peut également être utilisé lorsque vous souhaitez convertir la valeur d'un horodatage POSIX (datetime.fromtimestamp).

datetime.date (objet date) </ b> ・ ・ ・ objet date

from datetime import date
today = date(2020, 6, 1)
print(today)

Output: 2020-06-01

Les méthodes qui peuvent être utilisées sont couvertes par datetime (reverse? Ce qui peut être utilisé avec les objets date peut également être utilisé avec datetime ??). Fromtimestamp est également le même, et .isoformat.

datetime.timedelta (objet timedelta) </ b> ・ ・ ・ Temps écoulé, décalage horaire, etc. (Durée)

from datetime import date, timedelta
today = date(2020, 6, 1)
print(today + timedelta(days=7))

Output: 2020-06-08

Les arguments de timedelta () incluent les jours, les heures, etc. Fonctionne avec des nombres négatifs.

datetime.astimezone (objet astimezone) </ b> ・ ・ ・ Appliquer le fuseau horaire spécifié dans l'argument.

from datetime import datetime, timezone
today = datetime(2020, 6, 1, 15, 30, 00)
today = today.astimezone(timezone.utc)
print(today)

Output: 2020-06-01 06:30:00+00:00

module dateutil.tz

dateutil est un package qui étend datetime. Cette fois, seul le module tz, qui est fort dans l'implémentation du fuseau horaire appris par DataCamp.

tz.gettz () </ b> ・ ・ ・ Créez une instance du fuseau horaire dans l'argument.

from dateutil import tz
est = tz.gettz('America/New_York')
print(est)

Output: tzfile('/usr/share/zoneinfo/America/New_York')

Si vous l'utilisez seul, il ne sortira pas bien, mais comme le fuseau horaire de chaque région est tiré par le nom du continent et de la ville, vous pouvez l'utiliser en le mettant dans l'objet datetime tzinfo.

tz.datetime_ambiguous () </ b>… Un objet qui détermine s'il y a une heure ambiguë. «Heure ambiguë» est l'heure mappée sur plusieurs UTC. Il y avait un exemple très facile à comprendre, alors veuillez lire ce blog .

from dateutil import tz
from datetime import datetime

est = tz.gettz('America/New_York')
first_1am = datetime(2019, 11, 2, 1, 0, 0, tzinfo=est)
tz.datetime_ambiguous(first_1am)

Output: True //Devrait être. J'ai une erreur d'attribut dans Pythonista3.

tz.enfold () </ b> ・ ・ ・ Un objet pour distinguer l'heure ambiguë mentionnée ci-dessus. Si vous entrez l'heure d'été comme argument, elle sera renvoyée à l'heure après la fin de l'heure d'été. Je ne pouvais pas le comprendre en regardant le document, donc je l'ai deviné à partir de ce que j'ai appris dans DataCamp.

Lorsque vous traitez avec les types de date dans Pandas

Je ne connaissais que pd.to_datetime, mais il y en avait beaucoup d'autres.

pandas.DataFrame.tz_localize () </ b> ・ ・ ・ Localisez un DataFrame ou une série naïf dans le fuseau horaire spécifié.

pandas.DataFrame.tz_convert () </ b> ・ ・ ・ Convertit DataFrame ou Series conscient dans le fuseau horaire spécifié.

À la fin

Je n'ai pas mis en œuvre beaucoup autour des dates, donc j'en savais beaucoup pour la première fois. J'ai également appris pour la première fois que la base de données tz . Je pensais que c'était compliqué et profond. Je ne peux rien dire car je ne connais pas les autres langages, mais à l'inverse, Python a différents modules, et les dates sont faciles à toucher. J'ai pensé.

Si la description est incorrecte, il serait utile que vous puissiez la signaler (* ^^ *)

Document de référence

・ Https://dateutil.readthedocs.io/en/stable/tz.html ・ Https://docs.python.org/3/library/datetime.html ・ Https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.tz_localize.html ・ Https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.tz_convert.html ・

Recommended Posts