Python datetime (cu exemple)

În acest articol, veți învăța să manipulați data și ora în Python cu ajutorul unor exemple.

Python are un modul numit datetime pentru a lucra cu date și ore. Să creăm câteva programe simple legate de dată și oră înainte să aprofundăm.

Exemplul 1: obțineți data și ora curente

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

Când rulați programul, ieșirea va fi ceva de genul:

 2018-12-19 09: 26: 03.478039

Aici, am importat modulul datetime folosind import datetimeinstrucțiunea.

Una dintre clasele definite în datetimemodul este datetimeclasa. Apoi am folosit now()metoda pentru a crea un datetimeobiect care conține data și ora curente locale.

Exemplul 2: Obțineți data curentă

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

Când rulați programul, ieșirea va fi ceva de genul:

 2018-12-19

În acest program, am folosit today()metoda definită în dateclasă pentru a obține un dateobiect care conține data locală curentă.

Ce este în interiorul datetime?

Putem folosi funcția dir () pentru a obține o listă care conține toate atributele unui modul.

 import datetime print(dir(datetime))

Când rulați programul, ieșirea va fi:

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

Clasele utilizate în mod obișnuit în modulul datetime sunt:

  • data Clasa
  • ora Clasa
  • clasa datetime
  • timedelta Class

clasa datetime.date

Puteți instanția dateobiecte din dateclasă. Un obiect de dată reprezintă o dată (an, lună și zi).

Exemplul 3: obiect Data pentru a reprezenta o dată

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

Când rulați programul, ieșirea va fi:

 2019-04-13

Dacă vă întrebați, date()în exemplul de mai sus este un constructor al dateclasei. Constructorul ia trei argumente: anul, luna și ziua.

Variabila a este un dateobiect.

Putem importa dateclasa doar din datetimemodul. Iată cum:

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

Exemplul 4: obțineți data curentă

Puteți crea un dateobiect care conține data curentă utilizând o metodă de clasă numită today(). Iată cum:

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

Exemplul 5: obțineți o dată dintr-o marcă de timp

De asemenea, putem crea dateobiecte dintr-un timestamp. Un timestamp Unix este numărul de secunde dintre o anumită dată și 1 ianuarie 1970 la UTC. Puteți converti o marcă de timp în data utilizând fromtimestamp()metoda.

  from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp) 

Când rulați programul, ieșirea va fi:

 Data = 11-01-2012

Exemplul 6: tipăriți anul, luna și ziua de astăzi

Putem obține cu ușurință anul, luna, ziua, ziua săptămânii etc. Iată cum:

  from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day) 

datetime.time

Un obiect temporal instanțiat din timeclasă reprezintă ora locală.

Exemplul 7: Obiect de timp pentru a reprezenta timpul

  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) 

Când rulați programul, ieșirea va fi:

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

Exemplul 8: Imprimați ora, minutul, secunda și microsecunda

Odată ce creați un timeobiect, puteți imprima cu ușurință atributele acestuia, cum ar fi ora, minutul etc.

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

Când rulați exemplul, ieșirea va fi:

 ora = 11 minute = 34 secunde = 56 microsecunde = 0 

Observați că nu am trecut argumentul microsecunde. Prin urmare, valoarea sa implicită 0este tipărită.

datetime.datetime

The datetime module has a class named dateclass that can contain information from both date and time objects.

Example 9: Python datetime object

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

When you run the program, the output will be:

 2018-11-28 00:00:00 2017-11-28 23:55:59.342380 

The first three arguments year, month and day in the datetime() constructor are mandatory.

Example 10: Print year, month, hour, minute and timestamp

  from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp()) 

When you run the program, the output will be:

 year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238 

datetime.timedelta

A timedelta object represents the difference between two dates or times.

Example 11: Difference between two dates and times

  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 of t3 =", type(t3)) print("type of t6 =", type(t6)) 

When you run the program, the output will be:

 t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 = 

Notice, both t3 and t6 are of type.

Example 12: Difference between two timedelta objects

  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) 

When you run the program, the output will be:

 t3 = 14 days, 13:55:39 

Here, we have created two timedelta objects t1 and t2, and their difference is printed on the screen.

Example 13: Printing negative timedelta object

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

When you run the program, the output will be:

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

Example 14: Time duration in seconds

You can get the total number of seconds in a timedelta object using total_seconds() method.

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

When you run the program, the output will be:

 total seconds = 435633.233423 

You can also find sum of two dates and times using + operator. Also, you can multiply and divide a timedelta object by integers and floats.

Python format datetime

The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy in the US, whereas dd/mm/yyyy is more common in the UK.

Python has strftime() and strptime() methods to handle this.

Python strftime() - datetime object to string

The strftime() method is defined under classes date, datetime and time. The method creates a formatted string from a given date, datetime or time object.

Example 15: Format date using strftime()

  from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2) 

When you run the program, the output will be something like:

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

Here, %Y, %m, %d, %H etc. are format codes. The strftime() method takes one or more format codes and returns a formatted string based on it.

In the above program, t, s1 and s2 are strings.

  • %Y - year (0001,… , 2018, 2019,… , 9999)
  • %m - month (01, 02,… , 11, 12)
  • %d - day (01, 02,… , 30, 31)
  • %H - hour (00, 01,… , 22, 23
  • %M - minute (00, 01,… , 58, 59)
  • %S - second (00, 01,… , 58, 59)

To learn more about strftime() and format codes, visit: Python strftime().

Python strptime() - string to datetime

The strptime() method creates a datetime object from a given string (representing date and time).

Example 16: strptime()

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

When you run the program, the output will be:

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

The strptime() method takes two arguments:

  1. un șir care reprezintă data și ora
  2. cod format echivalent cu primul argument

Apropo %d, %Bși %Ycodurile de format sunt utilizate pentru zi, lună (numele complet) și, respectiv, anul.

Accesați Python strptime () pentru a afla mai multe.

Gestionarea fusului orar în Python

Să presupunem că lucrați la un proiect și trebuie să afișați data și ora pe baza fusului orar al acestora. În loc să încercați să vă ocupați singuri de fusul orar, vă sugerăm să utilizați un modul pytZ terță parte.

  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")) 

Când rulați programul, ieșirea va fi ceva de genul:

 Ora locală: 2018-12-20 13: 10: 44.260462 America / New_York ora: 2018-12-20 13: 10: 44.260462 Europa / Londra ora: 2018-12-20 13: 10: 44.260462 

Aici, datetime_NY și datetime_London sunt obiecte datetime care conțin data și ora curente ale fusului orar respectiv.

Articole interesante...