English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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
Puoi istanziare un oggetto data dalla classe date. L'oggetto data rappresenta una data (anno, mese e giorno).
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)
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)
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
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)
Gli oggetti di tempo creati dall'esempio della classe time rappresentano l'ora locale.
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
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.
Il modulo datetime ha una classe chiamata dateclass, che può contenere dati provenienti dadata和tempoLe informazioni dell'oggetto.
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.
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
L'oggetto timedelta rappresenta la differenza tra due date o 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,t3和t6Sono tutti di tipo <class 'datetime.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 timedeltat1和t2,i giorni di differenza diretti vengono stampati sullo schermo.
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
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.
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.
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.
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,s1和s2è 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.
Il metodo strptime() crea un oggetto datetime da una stringa data e ora fornita.
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()方法有两个参数:
表示日期和时间的字符串
等同于第一个参数的格式代码
顺便说一下,%d、%B和%Y格式代码分别用于日、月(全称)和年。
访问strptime() in 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_NY和datetime_London是包含各自时区的当前日期和时间的datetime对象。