Manipolazione delle date in Python

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 usando strptime() 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 classe timezone o zoneinfo.

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 classe time 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 oggetto datetime.

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 esplicitamente timezone.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.

YouTube Video