Manipolazione delle date in Python
Questo articolo spiega la manipolazione delle date in Python.
YouTube Video
Manipolazione delle date in Python
La manipolazione delle date in Python utilizza principalmente il modulo datetime
. Questo modulo fornisce varie classi e funzioni per manipolare date e orari.
Di seguito sono riportati alcuni esempi di manipolazione di base delle date utilizzando il modulo datetime
.
Ottenere data e orario
Puoi ottenere la data e l'ora corrente nel seguente modo. datetime.now()
e datetime.today()
restituiscono quasi lo stesso risultato, ma possono esserci differenze nel modo in cui gestiscono i fusi orari.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- Questo codice recupera e visualizza la data e l'ora corrente, nonché solo la data odierna.
Creare date e orari specifici
Puoi creare una data e un'ora specifica come segue.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- Questo codice crea e visualizza la data e l'ora specificate (7 novembre 2023, 10:30:45).
Formattazione delle date
La formattazione della data può essere eseguita come segue.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- Questo codice ottiene la data e l'ora corrente, la formatta nel formato specificato usando
strftime
e la visualizza.
Stringhe di formato data
%Y
: Anno (4 cifre)%m
: Mese (01 a 12)%d
: Giorno (01 a 31)%H
: Ora (00 a 23)%M
: Minuto (00 a 59)%S
: Secondo (00 a 59)
Parsing di stringhe di data
Puoi convertire una stringa che rappresenta una data in un oggetto datetime
.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- Questo codice converte una data rappresentata come stringa in un oggetto
datetime
usandostrptime()
e la visualizza.
Aritmetica delle date
Le operazioni aritmetiche sulle date possono essere eseguite come segue.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- Questo codice usa
timedelta
per aggiungere o sottrarre giorni e ore dalla data e ora corrente, calcolando e visualizzando la data e l'ora di domani, di una settimana fa e di due ore dopo.
Gestione dei fusi orari
Puoi anche gestire i fusi orari con il modulo datetime
.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
- Per impostazione predefinita,
datetime
restituisce un 'naive datetime' (senza informazioni sul fuso orario). Puoi gestire esplicitamente i fusi orari usando la classetimezone
ozoneinfo
.
La classe date e la classe time
Con il modulo datetime
, puoi gestire anche solo le date o solo gli orari.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
- La classe
date
gestisce solo le date, mentre la classetime
gestisce solo gli orari.
Conversione tra datetime
e timestamp
La conversione tra timestamp UNIX e oggetti datetime
è possibile. Qui, un timestamp UNIX si riferisce al numero di secondi trascorsi dal 1 gennaio 1970.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- Questo codice converte la data e l'ora corrente in un timestamp UNIX, quindi usa la funzione
fromtimestamp()
per riconvertire quel timestamp in un oggettodatetime
.
Errori comuni
Quando usi il modulo datetime
, dovresti prestare attenzione ai seguenti punti.
datetime.now()
non considera i fusi orari, quindi per l'internazionalizzazione è necessario utilizzare esplicitamentetimezone.utc
.- Fai attenzione a non confondere
%m
(mese) e%M
(minuto) nelle stringhe di formato.
Riepilogo
Il modulo datetime
offre anche molte altre funzionalità per una manipolazione flessibile di date e orari. Inoltre, sono disponibili classi come date
, time
e timedelta
, specializzate per operazioni specifiche.
L'uso di altre librerie consente anche di effettuare manipolazioni delle date più avanzate. Ad esempio, pandas
è specializzato nella gestione di serie temporali, mentre dateutil
è adatto per l'analisi complessa delle date. Inoltre, anche la libreria arrow
è molto utile.
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.