Šiame straipsnyje išmoksite manipuliuoti data ir laiku „Python“ pavyzdžių pagalba.
„Python“ turi modulį, pavadintą „data time“, kad galėtų dirbti su datomis ir laikais. Sukurkime keletą paprastų programų, susijusių su data ir laiku, kol nesigilinsime.
1 pavyzdys: gaukite dabartinę datą ir laiką
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Kai paleisite programą, išvestis bus maždaug tokia:
2018-12-19 09: 26: 03.478039
Čia mes importavome datos laiko modulį naudodami import datetime
pareiškimą.
Viena iš datetime
modulio apibrėžtų klasių yra datetime
klasė. Tada mes panaudojome now()
metodą, kad sukurtume datetime
objektą, kuriame būtų dabartinė vietinė data ir laikas.
2 pavyzdys: gaukite dabartinę datą
import datetime date_object = datetime.date.today() print(date_object)
Kai paleisite programą, išvestis bus maždaug tokia:
2018-12-19
Šioje programoje mes naudojome klasėje today()
apibrėžtą metodą, date
norėdami gauti date
objektą, kuriame yra dabartinė vietinė data.
Kas yra datos laikas?
Mes galime naudoti dir () funkciją, kad gautume sąrašą, kuriame būtų visi modulio atributai.
import datetime print(dir(datetime))
Kai paleisite programą, išvestis bus:
("MAXYEAR", "MINYEAR", "__builtins__", "__cached__", "__doc__", "__file__", "__loader__", "__name__", "__package__", "__spec__", "_divide_and_round", "data", datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Datos laiko modulyje dažniausiai naudojamos šios klasės:
- datos klasė
- laiko klasė
- datos laiko klasė
- „timedelta“ klasė
datetime.date klasė
Galite iš karto sukurti date
objektus iš date
klasės. Datos objektas reiškia datą (metus, mėnesį ir dieną).
3 pavyzdys: Date objektas, nurodantis datą
import datetime d = datetime.date(2019, 4, 13) print(d)
Kai paleisite programą, išvestis bus:
2019-04-13
Jei įdomu, date()
aukščiau pateiktame pavyzdyje yra date
klasės konstruktorius . Konstruktorius pateikia tris argumentus: metus, mėnesį ir dieną.
Kintamasis a yra date
objektas.
date
Klasę galime importuoti tik iš datetime
modulio. Štai kaip:
from datetime import date a = date(2019, 4, 13) print(a)
4 pavyzdys: gaukite dabartinę datą
date
Objektą, kuriame yra dabartinė data, galite sukurti naudodami klasės metodą, pavadintą today()
. Štai kaip:
from datetime import date today = date.today() print("Current date =", today)
5 pavyzdys: gaukite datą iš laiko žymės
Mes taip pat galime sukurti date
objektus iš laiko žymės. „Unix“ laiko žymė yra sekundžių skaičius nuo tam tikros datos iki 1970 m. Sausio 1 d. UTC. Laiko antspaudą galite konvertuoti į datą naudodami fromtimestamp()
metodą.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Kai paleisite programą, išvestis bus:
Data = 2012-01-11
6 pavyzdys: atspausdinkite šiandieninius metus, mėnesį ir dieną
Iš datos objekto galime lengvai gauti metus, mėnesį, dieną, savaitės dieną ir kt. Štai kaip:
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
Laiko objektas, sukurtas iš time
klasės, atspindi vietinį laiką.
7 pavyzdys: laiko objektas, rodantis laiką
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)
Kai paleisite programą, išvestis bus:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
8 pavyzdys: spausdinti valandą, minutę, sekundę ir mikrosekundę
Sukūrę time
objektą, galite lengvai atsispausdinti jo atributus, pvz., Valandą, minutę ir pan.
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)
Paleidus pavyzdį, išvestis bus:
valanda = 11 minučių = 34 sekundės = 56 mikrosekundės = 0
Atkreipkite dėmesį, kad mes neišlaikėme mikrosekundžių argumento. Taigi 0
atspausdinama numatytoji jo vertė .
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:
- eilutė, nurodanti datą ir laiką
- formato kodas, lygiavertis pirmajam argumentui
Beje %d
, %B
ir %Y
formato kodai naudojami atitinkamai dienai, mėnesiui (vardas) ir metams.
Norėdami sužinoti daugiau, apsilankykite „Python strptime“ ().
Laiko juostos tvarkymas „Python“
Tarkime, jūs dirbate prie projekto ir turite rodyti datą ir laiką pagal jų laiko juostą. Užuot bandę patys tvarkyti laiko juostą, siūlome naudoti trečiosios šalies „pytZ“ modulį.
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"))
Kai paleisite programą, išvestis bus maždaug tokia:
Vietinis laikas: 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
Čia datetime_NY ir datetime_London yra datos laiko objektai, kuriuose yra dabartinė jų laiko juostos data ir laikas.