V tem članku se boste s pomočjo primerov naučili manipulirati z datumom in uro v Pythonu.
Python ima modul z imenom datetime za delo z datumi in časi. Ustvarimo nekaj preprostih programov, povezanih z datumom in časom, preden se poglobimo.
Primer 1: Pridobite trenutni datum in uro
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Ko zaženete program, bo rezultat približno tak:
2018-12-19 09: 26: 03.478039
Tukaj smo z uporabo stavka uvozili modul datetimeimport datetime
.
Eden od razredov, opredeljenih v datetime
modulu, je datetime
razred. Nato smo z now()
metodo ustvarili datetime
objekt, ki vsebuje trenutni lokalni datum in uro.
2. primer: pridobite trenutni datum
import datetime date_object = datetime.date.today() print(date_object)
Ko zaženete program, bo rezultat približno tak:
2018-12-19
V tem programu smo uporabili today()
metodo, določeno v date
razredu, da dobimo date
objekt, ki vsebuje trenutni lokalni datum.
Kaj je znotraj datuma in časa?
S funkcijo dir () lahko dobimo seznam, ki vsebuje vse atribute modula.
import datetime print(dir(datetime))
Ko zaženete program, bo rezultat:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Pogosto uporabljeni razredi v modulu datetime so:
- datum Razred
- čas Razred
- datetime Razred
- Razred timedelta
datetime.date Razred
Primere date
iz date
razreda lahko ustvarite v primerku. Datumski datum predstavlja datum (leto, mesec in dan).
Primer 3: Datumski objekt, ki predstavlja datum
import datetime d = datetime.date(2019, 4, 13) print(d)
Ko zaženete program, bo rezultat:
2019-04-13
Če se sprašujete, je date()
v zgornjem primeru konstruktor date
razreda. Konstruktor upošteva tri argumente: leto, mesec in dan.
Spremenljivka a je date
objekt.
date
Razred lahko uvozimo samo iz datetime
modula. Takole:
from datetime import date a = date(2019, 4, 13) print(a)
4. primer: pridobite trenutni datum
date
Predmet, ki vsebuje trenutni datum, lahko ustvarite z uporabo imenovane metode razreda today()
. Takole:
from datetime import date today = date.today() print("Current date =", today)
Primer 5: Pridobite datum iz časovnega žiga
date
Predmete lahko ustvarimo tudi iz časovnega žiga. Časovni žig Unix je število sekund med določenim datumom in 1. januarjem 1970 ob UTC. Časovni žig lahko pretvorite v datum z uporabo fromtimestamp()
metode.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Ko zaženete program, bo rezultat:
Datum = 2011-11-11
Primer 6: Natisnite današnje leto, mesec in dan
Od datuma lahko enostavno dobimo leto, mesec, dan, dan v tednu itd. Takole:
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
Časovni objekt, ki ga ustvari time
razred, predstavlja lokalni čas.
Primer 7: Časovni objekt, ki predstavlja čas
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)
Ko zaženete program, bo rezultat:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56,234566
Primer 8: Natisnite uro, minuto, sekundo in mikrosekundo
Ko ustvarite time
predmet, lahko enostavno natisnete njegove atribute, kot so ura, minuta itd.
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)
Ko zaženete primer, bo rezultat:
ura = 11 minut = 34 sekund = 56 mikrosekund = 0
Upoštevajte, da nismo podali mikrosekundnega argumenta. Zato 0
je natisnjena njegova privzeta vrednost .
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:
- niz, ki predstavlja datum in uro
- kodo formata, enakovredno prvemu argumentu
Mimogrede %d
, %B
in %Y
kode formatov se uporabljajo za dan, mesec (polno ime) oziroma leto.
Obiščite Python strptime (), če želite izvedeti več.
Ravnanje s časovnim pasom v Pythonu
Denimo, da delate na projektu in morate prikazati datum in uro glede na njihov časovni pas. Namesto da bi sami poskušali obvladati časovni pas, predlagamo, da uporabite neodvisni modul 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"))
Ko zaženete program, bo rezultat približno tak:
Lokalni čas: 20.12.2018 13: 10: 44.260462 Amerika / New_York čas: 2018-12-20 13: 10: 44.260462 Evropa / London čas: 2018-12-20 13: 10: 44.260462
Tu sta datetime_NY in datetime_London predmeta datetime, ki vsebujeta trenutni datum in čas njunega časovnega pasu.