Selles artiklis õpitakse näidete abil Pythonis kuupäeva ja kellaaega manipuleerima.
Python on moodul nimega datetime töötada kuupäevad ja kellaajad. Enne kui süveneme, loome paar lihtsat kuupäeva ja kellaajaga seotud programmi.
Näide 1: hankige praegune kuupäev ja kellaaeg
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Programmi käivitamisel on väljund umbes selline:
2018-12-19 09: 26: 03.478039
Siin oleme importinud kuupäevaaja mooduli, kasutades import datetime
lauset.
Üks datetime
moodulis määratletud klassidest on datetime
klass. Seejärel kasutasime now()
meetodit, et luua datetime
objekt, mis sisaldab praegust kohalikku kuupäeva ja kellaaega.
Näide 2: hankige praegune kuupäev
import datetime date_object = datetime.date.today() print(date_object)
Programmi käivitamisel on väljund umbes selline:
2018-12-19
Selles programmis oleme praeguses kohalikku kuupäeva sisaldava objekti saamiseks kasutanud klassis today()
määratletud meetodit .date
date
Mis on kuupäeva sees?
Funktsiooni dir () abil saame saada loendi, mis sisaldab kõiki mooduli atribuute.
import datetime print(dir(datetime))
Programmi käivitamisel on väljund järgmine:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'kuupäev', datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Kuupäevaaja moodulis on tavaliselt kasutatavad klassid järgmised:
- kuupäev Klass
- ajaklass
- kuupäevaaja klass
- timedelta klass
kuupäev.kuupäev Klass
Saate klassi date
esemeid kiireks muuta date
. Kuupäeva objekt tähistab kuupäeva (aasta, kuu ja päev).
Näide 3: Kuupäeva objekt, mis tähistab kuupäeva
import datetime d = datetime.date(2019, 4, 13) print(d)
Programmi käivitamisel on väljund järgmine:
2019-04-13
Kui mõtlete, date()
on ülaltoodud näites date
klassi konstruktor . Konstruktoril on kolm argumenti: aasta, kuu ja päev.
Muutuja a on date
objekt.
Me ei saa importida ainult date
klassist datetime
moodul. Nii toimige järgmiselt.
from datetime import date a = date(2019, 4, 13) print(a)
Näide 4: hankige praegune kuupäev
date
Klassimeetodi nimega saate luua objekti, mis sisaldab praegust kuupäeva today()
. Nii toimige järgmiselt.
from datetime import date today = date.today() print("Current date =", today)
Näide 5: kuupäeva hankimine ajatemplilt
Saame date
objekte luua ka ajatemplist. Unixi ajatempel on sekundite arv kindla kuupäeva ja 1. jaanuari 1970 vahel UTC-s. fromtimestamp()
Meetodi abil saate ajatempli kuupäevaks teisendada .
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Programmi käivitamisel on väljund järgmine:
Kuupäev = 2012-01-11
Näide 6: printige tänane aasta, kuu ja päev
Kuupäevaobjektilt saame hõlpsalt aasta, kuu, päeva, nädalapäeva jne. Nii toimige järgmiselt.
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)
kuupäev.aeg
time
Klassist kiirendatud ajaobjekt tähistab kohalikku aega.
Näide 7: Ajaobjekt aja esindamiseks
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)
Programmi käivitamisel on väljund järgmine:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Näide 8: tundide, minutite, sekundite ja mikrosekundite printimine
Kui olete time
objekti loonud , saate selle atribuudid, nagu tund, minut jne, hõlpsasti printida.
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)
Näite käivitamisel on väljund järgmine:
tund = 11 minut = 34 sekund = 56 mikrosekundit = 0
Pange tähele, et me pole mikrosekundilist argumenti läbinud. Seega 0
prinditakse selle vaikeväärtus .
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:
- string, mis tähistab kuupäeva ja kellaaega
- vormingukood, mis on samaväärne esimese argumendiga
Muide %d
, %B
ja %Y
vormingukoode kasutatakse vastavalt päevale, kuule (täisnimi) ja aastale.
Lisateabe saamiseks külastage Pythoni strptime'i ().
Ajavööndi käitlemine Pythonis
Oletame, et töötate projektiga ja peate kuvama kuupäeva ja kellaaja nende ajavööndi põhjal. Selle asemel, et proovida ajavööndiga ise hakkama saada, soovitame teil kasutada kolmanda osapoole pytZ moodulit.
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"))
Programmi käivitamisel on väljund umbes selline:
Kohalik aeg: 2018-12-20 13: 10: 44.260462 Ameerika / New_York aeg: 2018-12-20 13: 10: 44.260462 Euroopa / Londoni aeg: 2018-12-20 13: 10: 44.260462
Siin on datetime_NY ja datetime_London kuupäevaobjektid, mis sisaldavad nende ajavööndi praegust kuupäeva ja kellaaega.