English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base di Python

Controllo di flusso di Python

Funzione in Python

Tipi di dati in Python

Operazioni di file di Python

Oggetti e classi di Python

Data e ora di Python

Conoscenze avanzate di Python

Manuale di riferimento di Python

Data e ora (datetime) in Python

In questo articolo, imparerai come manipolare data e ora in Python attraverso esempi.

Python ha un nomedatetimeIl modulo, utilizzato per gestire data e ora. Prima di approfondire, creiamo alcuni programmi semplici relativi a data e ora.

Esempio 1: Ottenere la data e l'ora corrente

import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)

当您运行程序时,输出将类似于:

2020-04-13 17:09:49.015911

Qui, abbiamo importatodatetimemodulo.

Un modulo definito nel modulo datetime è la classe datetime. Poi, utilizziamo il metodo now() per creare un oggetto datetime che contiene la data e l'ora locali correnti.

Esempio 2: Ottenere la data corrente

import datetime
date_object = datetime.date.today()
print(date_object)

当您运行程序时,输出将类似于:

2020-04-13

In questo programma, abbiamo utilizzato il metodo today() definito nella classe date per ottenere un oggetto date che contiene la data locale corrente.

Cosa c'è dentro datetime?

Possiamo usaredir()La funzione per ottenere l'elenco di tutte le proprietà del modulo.

import datetime
print(dir(datetime))

Eseguito il programma, l'output è:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

Le classi comuni nel modulo datetime sono:

  • Classe date

  • Classe time

  • Classe datetime

  • Classe timedelta

Classe datetime.date

Puoi istanziare un oggetto data dalla classe date. L'oggetto data rappresenta una data (anno, mese e giorno).

Esempio 3: Oggetto Date per rappresentare la data

import datetime
d = datetime.date(2019, 4, 13)
print(d)

Eseguito il programma, l'output è:

2019-04-13

Se vuoi sapere, nel esempio sopra, date() è il costruttore della classe date. Il costruttore ha tre parametri: anno, mese e giorno.

VariabileaÈ un oggetto data.

Possiamo importare la classe date solo dal modulo datetime. Ecco come:

from datetime import date
a = date(2019, 4, 13)
print(a)

Esempio 4: Ottenere data corrente

Puoi creare un oggetto data con un metodo di classe chiamato today(). Il metodo è così:

from datetime import date
today = date.today()
print("Data corrente =", today)

Esempio 5: Ottenere data da timestamp

Possiamo anche creare un oggetto data partendo da un timestamp. Il timestamp Unix è il numero di secondi tra una data specifica e l'1 gennaio 1970 UTC. Possiamo utilizzare il metodo fromtimestamp() per convertire un timestamp in una data.

from datetime import date
timestamp = date.fromtimestamp(1576244364)
print("Data =", timestamp)

Eseguito il programma, l'output è:

data = 2019-12-13

Esempio 6: Stampare anno, mese e giorno di oggi

Possiamo facilmente ottenere anno, mese, giorno, giorno della settimana ecc. dall'oggetto data. Ecco come:

from datetime import date
# Oggetto data di oggi
today = date.today() 
print("Anno corrente:", today.year)
print("Mese corrente:", today.month)
print("Giorno corrente:", today.day)

datetime.time

Gli oggetti di tempo creati dall'esempio della classe time rappresentano l'ora locale.

Esempio 7: Oggetto di tempo che rappresenta il tempo

from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
# time(hour, minute and second)
b = time(11, 34, 56)
print("b =", b)
# time(hour, minute and second)
c = time(hour = 11, minute = 34, second = 56)
print("c =", c)
# time(hour, minute, second, microsecond)
d = time(11, 34, 56, 234566)
print("d =", d)

Eseguito il programma, l'output è:

a = 00:00:00
b = 11:34:56
c = 11:34:56
d = 11:34:56.234566

Esempio 8: Stampa di ora, minuti, secondi e microsecondi

Dopo aver creato l'oggetto time, è possibile stampare facilmente le sue proprietà, ad esempioore,minutie altri.

from datetime import time
a = time(11, 34, 56)
print("ore=", a.hour)
print("minuti=", a.minute)
print("secondi=", a.second)
print("microsecondi=", a.microsecond)

Quando si esegue l'esempio, l'output sarà:

ore = 11
minuti = 34
secondi = 56
microsecondi = 0

Attenzione, non abbiamo trasmessomicrosecondiparametro. Pertanto, verrà stampato il valore predefinito 0.

datetime.datetime

Il modulo datetime ha una classe chiamata dateclass, che può contenere dati provenienti dadatatempoLe informazioni dell'oggetto.

Esempio 9: Oggetto datetime Python

from datetime import datetime
#datetime(year, month, day)
a = datetime(2019, 11, 28)
print(a)
# datetime(year, month, day, hour, minute, second, microsecond)
b = datetime(2019, 11, 28, 23, 55, 59, 342380)
print(b)

Eseguito il programma, l'output è:

2019-11-28 00:00:00
2019-11-28 23:55:59.342380

I primi tre parametri year, month e day del costruttore datetime() sono obbligatori.

Esempio 10: Stampa anno, mese, ora, minuto e timestamp

from datetime import datetime
a = datetime(2019, 12, 28, 23, 55, 59, 342380)
print("Anno =", a.year)
print("Mese =", a.month)
print("Giorno =", a.day)
print("Ore =", a.hour)
print("Minuti =", a.minute)
print("Timestamp =", a.timestamp())

Eseguito il programma, l'output è:

Anno = 2019
Mese = 12
Giorno = 28
Ore = 23
Minuti = 55
Timestamp = 1577548559.34238

datetime.timedelta

L'oggetto timedelta rappresenta la differenza tra due date o orari.

Esempio 11: Differenza tra due date e orari

from datetime import datetime, date
t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
t3 = t1 - t2
print("t3 =", t3)
t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13)
t6 = t4 - t5
print("t6 =", t6)
print("type t3 =", type(t3)) 
print("type t6 =", type(t6))

Eseguito il programma, l'output è:

t3 = 201 giorni, 0:00:00
t6 = -333 giorni, 1:14:20
type t3 = <class 'datetime.timedelta'>
type t6 = <class 'datetime.timedelta'>

Attenzione,t3t6Sono tutti di tipo <class 'datetime.timedelta'>.

Esempio 12: Differenza tra due timedelta

from datetime import timedelta
t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33)
t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54)
t3 = t1 - t2
print("t3 =", t3)

Eseguito il programma, l'output è:

t3 = 14 days, 13:55:39

In questo caso, abbiamo creato due oggetti timedeltat1t2,i giorni di differenza diretti vengono stampati sullo schermo.

Esempio 13: Stampa timedelta negativo

from datetime import timedelta
t1 = timedelta(seconds = 33)
t2 = timedelta(seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
print("t3 =", abs(t3))

Eseguito il programma, l'output è:

t3 = -1 day, 23:59:39
t3 = 0:00:21

Esempio 14: Durata (in secondi)

Puoi ottenere il numero totale di secondi dell'oggetto timedelta usando il metodo total_seconds().

from datetime import timedelta
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())

Eseguito il programma, l'output è:

total seconds = 435633.233423

Puoi anche usare l'operatore + per trovare la somma di due date e orari. Allo stesso modo, puoi moltiplicare l'oggetto timedelta per interi e numeri decimali.

Formattazione della data e ora in Python

Il modo di rappresentare la data e l'ora può variare da luogo a luogo, organizzazione ecc. Negli Stati Uniti, è più comune usare mm / dd / yyyy, mentre nel Regno Unito è più comune usare dd / mm / yyyy.

Python ha i metodi strftime() e strptime() per gestire questo problema.

Python strftime() - Oggetto stringa della data e ora

Il metodo strftime() è definito sotto le classi date, datetime e time. Questo metodo crea una stringa formattata in base alla data, all'ora o all'oggetto datetime fornito.

Esempio 15: Formattazione della data con strftime()

from datetime import datetime
# data e ora corrente
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("tempo:", t)
s1 = now.strftime("%m/%d/%Y, %H:%M:%S")
# formato mm/dd/YY H:M:S
print("s1:", s1)
s2 = now.strftime("%d/%m/%Y, %H:%M:%S")
# formato dd/mm/YY H:M:S
print("s2:", s2)

当您运行程序时,输出将类似于:

tempo: 04:34:52
s1: 12/26/2018, 04:34:52
s2: 26/12/2018, 04:34:52

qui %Y, %m, %d, %H sono codici di formato. Il metodo strftime() accetta uno o più codici di formato e restituisce una stringa formattata in base a questi codici.

Nel programma sopra,t,s1s2è una stringa.

  • %Y - anni [0001, ..., 2018, 2019, ..., 9999]

  • %m - mesi [01, 02, ..., 11, 12]

  • %d - giorni [01, 02, ..., 30, 31]

  • %H - ore [00, 01, ..., 22, 23

  • %M - minuti [00, 01, ..., 58, 59]

  • %S - secondi [00, 01, ..., 58, 59]

Per ulteriori informazioni sul codice strftime() e sulla configurazione dei formati, visitare:strftime() in Python.

Python strptime() - Stringa data e ora

Il metodo strptime() crea un oggetto datetime da una stringa data e ora fornita.

Esempio 16: strptime()

from datetime import datetime
date_string = "21 Giugno, 2018"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)

Eseguito il programma, l'output è:

date_string = 21 Giugno, 2018
date_object = 2018-06-21 00:00:00

strptime()方法有两个参数:

  1. 表示日期和时间的字符串

  2. 等同于第一个参数的格式代码

顺便说一下,%d、%B和%Y格式代码分别用于日、月(全称)和年。

访问strptime() in Python了解更多信息。

在Python中处理时区

假设您正在处理一个项目,需要根据其时区显示日期和时间。我们建议您使用第三方的pytZ模块,而不是自己处理时区。

from datetime import datetime
import pytz
local = datetime.now()
print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S"))
tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S"))
tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))

当您运行程序时,输出将类似于:

Local time: 2018-12-20 13:10:44.260462
America/New_York time: 2018-12-20 13:10:44.260462
Europe/London time: 2018-12-20 13:10:44.260462

在这里,datetime_NYdatetime_London是包含各自时区的当前日期和时间的datetime对象。