Šajā rakstā jūs uzzināsiet manipulēt ar Python datumu un laiku, izmantojot piemērus.
Python ir modulis ar nosaukumu datetime, lai strādātu ar datumiem un laikiem. Pirms iedziļināsimies, izveidosim dažas vienkāršas programmas, kas saistītas ar datumu un laiku.
1. piemērs: iegūstiet pašreizējo datumu un laiku
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Palaidot programmu, izeja būs šāda:
2018-12-19 09: 26: 03.478039
Šeit mēs esam importējuši datuma laika moduli, izmantojot import datetime
paziņojumu.
Viena no datetime
modulī definētajām klasēm ir datetime
klase. Pēc tam mēs izmantojām now()
metodi, lai izveidotu datetime
objektu, kas satur pašreizējo vietējo datumu un laiku.
2. piemērs: iegūt pašreizējo datumu
import datetime date_object = datetime.date.today() print(date_object)
Palaidot programmu, izeja būs šāda:
2018-12-19
Šajā programmā mēs esam izmantojuši klasē today()
definēto metodi, date
lai iegūtu date
objektu ar pašreizējo vietējo datumu.
Kas ir datuma laiks?
Mēs varam izmantot dir () funkciju, lai iegūtu sarakstu ar visiem moduļa atribūtiem.
import datetime print(dir(datetime))
Palaidot programmu, izeja būs:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Datuma laika modulī parasti tiek izmantotas šādas klases:
- datums Klase
- laika klase
- datetime klase
- timedelta klase
datetime.date Klase
Jūs varat instantizēt date
objektus no date
klases. Datuma objekts apzīmē datumu (gadu, mēnesi un dienu).
3. piemērs: Date objekts, kas attēlo datumu
import datetime d = datetime.date(2019, 4, 13) print(d)
Palaidot programmu, izeja būs:
2019-04-13
Ja jūs domājat, date()
iepriekš minētajā piemērā ir date
klases konstruktors . Konstruktoram ir trīs argumenti: gads, mēnesis un diena.
Mainīgais a ir date
objekts.
Mēs varam importēt date
klasi tikai no datetime
moduļa. Lūk, kā:
from datetime import date a = date(2019, 4, 13) print(a)
4. piemērs: iegūstiet pašreizējo datumu
date
Izmantojot izveidoto klases metodi, varat izveidot objektu, kurā ir pašreizējais datums today()
. Lūk, kā:
from datetime import date today = date.today() print("Current date =", today)
5. piemērs: iegūstiet datumu no laika zīmoga
Mēs varam arī izveidot date
objektus no laika zīmoga. Unix laika zīmogs ir sekunžu skaits starp konkrētu datumu un 1970. gada 1. janvāri pēc UTC. Izmantojot fromtimestamp()
metodi, laika zīmogu var konvertēt uz datumu .
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Palaidot programmu, izeja būs:
Datums = 2012-01-11
6. piemērs: izdrukājiet šodienas gadu, mēnesi un dienu
Mēs varam viegli iegūt gadu, mēnesi, dienu, nedēļas dienu utt. No datuma objekta. Lūk, kā:
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
Laika objekts, kas iegūts no time
klases, attēlo vietējo laiku.
7. piemērs: Laika objekts laika attēlošanai
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)
Palaidot programmu, izeja būs:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
8. piemērs: stundas, minūtes, sekundes un mikrosekundes drukāšana
Kad esat izveidojis time
objektu, varat viegli izdrukāt tā atribūtus, piemēram, stundu, minūti utt.
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)
Palaižot piemēru, izeja būs:
stunda = 11 minūte = 34 sekundes = 56 mikrosekundes = 0
Ievērojiet, ka mēs neesam izturējuši mikrosekundes argumentu. Tādējādi 0
tiek drukāta tā noklusējuma vērtība .
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:
- virkne, kas attēlo datumu un laiku
- formāta kods, kas līdzvērtīgs pirmajam argumentam
Starp citu, %d
, %B
un %Y
formāta kodi tiek izmantoti dienu, mēnesi (pilns nosaukums) un gada laikā attiecīgi.
Apmeklējiet Python strptime (), lai uzzinātu vairāk.
Apstrādāt laika joslu Python
Pieņemsim, ka jūs strādājat ar projektu, un jums ir jāparāda datums un laiks, pamatojoties uz viņu laika joslu. Tā vietā, lai mēģinātu pats rīkoties ar laika joslu, iesakām izmantot trešās puses pytZ moduli.
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"))
Palaidot programmu, izeja būs šāda:
Vietējais laiks: 2018-12-20 13: 10: 44.260462 America / New_York laiks: 2018-12-20 13: 10: 44.260462 Eiropa / Londonas laiks: 2018-12-20 13: 10: 44.260462
Šeit datetime_NY un datetime_London ir datuma objekti, kas satur attiecīgās laika joslas pašreizējo datumu un laiku.