У раду са датумима и временима у програмском језику Python, често се јавља потреба за израчунавањем временских разлика. Овај водич пружиће вам знање о томе како да израчунате разлику између два временска тренутка, изражену у сатима, минутима и секундама.
Након проучавања овог водича, разумећете:
- Како се користи Python-ов модул `datetime` за манипулацију датумима и временима.
- Шта представљају `timedelta` објекти и колика је њихова корисност.
- Како се израчунава временска разлика између било која два временска тренутка, изражена у сатима, минутима и секундама.
Започнимо.
Коришћење Python-овог модула за датуме и времена
За рад са датумима и временима у Python-у, користићете модул под називом `datetime`. Овај модул је саставни део стандардне Python библиотеке. Стога га можете одмах увести у ваш радни простор користећи следећу команду:
import datetime
Да бисте израчунали временску разлику, потребно је да имате две различите временске ознаке. Можете одабрати да креирате:
- Два објекта типа датум.
- Два објекта типа време.
- Комбинацију објеката датума и времена, односно `datetime` објекте.
Креирање објекта датума у Python-у
Увезимо класу `date` из модула `datetime`. Да бисте креирали објекат датума у Python-у, можете користити општи облик `datetime.date(<година>, <месец>, <дан>)`. Ево примера креирања објекта датума `date1`:
from datetime import date date1 = datetime.date(2022, 3, 27) print(date1) # Output: 2022-03-27
Можете испробати овај код на онлајн Python компајлеру или инсталирајте Python на ваш рачунар.
Као што је приказано, када се датум штампа, он је форматиран у YYYY-MM-DD формату.
Напомена: Месец је потребно унети као цео број, без водеће нуле. Вероватно сте навикли да додајете почетну нулу месецу када пишете датуме.
На пример, да бисте унели датум у јуну, 6. месецу у години, користите 6, а не 06.
Ако покушате да покренете следећи код, где је месец унет као 03 уместо 3, видећете да програм враћа синтаксну грешку:
date1 = datetime.date(2022, 03, 27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
Сада, погледајмо како се креира објекат времена у Python-у.
Креирање објекта времена у Python-у
Да бисмо креирали објекат времена, увезимо класу `time`. Објекат времена се креира помоћу класе `time`, навођењем следећих атрибута: сат, минут, секунда и микросекунда.
Сви ови атрибути су опциони. Ако не наведете одређени атрибут, на пример, секунду, његова подразумевана вредност ће бити 0.
Следећи код показује како можете креирати објекат времена `time1`. Као и код објекта датума, можете одштампати објекат времена да бисте видели форматирано време.
from datetime import time time1 = datetime.time(13, 27, 45, 4600) print(time1) # Output: 13:27:45.004600
Креирање објекта датума и времена у Python-у
Објекат датума не садржи информације о времену, а објекат времена не садржи информације о датуму.
У пракси, често су вам потребне информације и о датуму и о времену. Због тога се препоручује коришћење класе `datetime`.
Можете приступити класи `datetime` и креирати `datetime` објекте на следећи начин:
dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
Сада креирајмо још један `datetime` објекат `dt2` без атрибута секунде. Видећете да је постављен на 0 – подразумевана вредност.
dt2 = datetime.datetime(2022, 6, 30, 14, 28) print(dt2) # Output: 2022-06-30 14:28:00
Научили сте како се креирају временске ознаке у Python-у – као датуми, времена и датуми и времена. Сада ћемо видети како се израчунава разлика између било које две временске ознаке.
Пређимо на следећи одељак.
Коришћење `timedelta` објекта у Python-у
У Python-у, `timedelta` представља временски распон. То је разлика између два објекта датума, времена или датума и времена.
Када саберете или одузмете два објекта датума, времена или датума и времена, добијате објекат `timedelta`. Овај објекат има корисне атрибуте и методе који могу помоћи у израчунавању временске разлике.
Израчунајмо разлику између два `datetime` објекта `dt1` и `dt2`.
dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000) dt2 = datetime.datetime(2022, 6, 30, 14, 28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
Променљива `tdelta` садржи временску разлику између `dt1` и `dt2`. Тип променљиве `tdelta` је `datetime.timedelta`, што је потврђено коришћењем функције `type()`.
Погледајмо још један пример.
Израчунавање временске разлике између два датума
Размотримо један једноставан, али интересантан пример.
Проблем: Израчунајте временску разлику између тренутног датума и вашег рођендана.
Да бисте то урадили, поставите данашњи датум као прву временску ознаку, а свој рођендан као другу временску ознаку.
Прво, креирајмо два објекта датума и времена:
- један за данас, који ћемо назвати `today`, и
- један за ваш рођендан, који ћемо назвати `bday`.
Класа `datetime` има метод `now()` који враћа тренутни локални датум и време. Користићемо га за `today` – наш референтни датум.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
У коду испод, замените `bday` са вашим датумом рођења да бисте израчунали преостало време до вашег рођендана ове године.
Ако читате овај текст након што вам је рођендан прошао, можете поставити `bday` на ваш следећи рођендан.
bday = datetime.datetime(2022, 8, 30, 11, 59) print(bday) # Sample Output: 2022-08-30 11:59:00
Следећи корак је израчунавање `time_diff`, који је `timedelta` објекат. Једноставно одузмите `today` од `bday` и добићете временску разлику.
time_diff = bday - today print(f"Ваш рођендан је за {time_diff}") # Output Ваш рођендан је за 220 days, 2:46:00.127416
Да бисте сазнали број преосталих дана, користите атрибут `days` на `time_diff`, као што је приказано:
tdays = time_diff.days print(f"Ваш рођендан је за {tdays} дана.") # Output Ваш рођендан је за 220 дана.
Израчунавање временске разлике у секундама
Сада, израчунајмо колико је секунди преостало до вашег рођендана.
Да бисте израчунали укупну временску разлику у секундама, користите метод `total_seconds()` на `timedelta` објекту `time_diff`.
tsecs = time_diff.total_seconds() print(f"До вашег рођендана је {tsecs} секунди.") # Output До вашег рођендана је 19017960.127416 секунди.
То је заиста дуго чекање!
Сада знате како да израчунате временску разлику између било које две временске ознаке у секундама.
Подсетимо се неких основа. Дан се састоји од 24 сата, сат траје 60 минута, а 60 секунди чини минут.
Ово је приказано на слици испод:
Сати, минути и секунде
Да бисте претворили из секунди у минуте, сате и дане, можете користити следећу табелу и поделити са одговарајућим фактором конверзије.
Табела конверзије времена
У следећим одељцима ћемо претворити временску разлику у секундама у минуте и сате.
Израчунавање временске разлике у минутима
Да бисте добили временску разлику у минутима, потребно је поделити укупан број секунди са 60.
Поделимо `tsecs` са 60 и ускладиштимо вредност у променљиву `tmins`:
tmins = tsecs/60 print(f"До вашег рођендана је {tmins} минута.") # Output До вашег рођендана је 316966.0021236 минута.
Израчунавање временске разлике у сатима
Сада када сте израчунали временску разлику у минутима, можете је поделити са фактором 60 да бисте добили разлику у сатима. Алтернативно, можете поделити укупан број секунди са 60 * 60 = 3600.
thrs = tsecs/(60*60) print(f"До вашег рођендана је {thrs} сати.") # Output До вашег рођендана је 5282.76670206 сати.
Сада сте научили како да израчунате временску разлику у било којој јединици по вашем избору.
Закључак
У овом водичу сте научили како да:
- Креирате и манипулишете датумима и временима користећи Python-ов `datetime` модул.
- Користите `timedelta` објекте да бисте добили временски распон или временску разлику.
- Израчунате временску разлику у секундама, минутима и сатима.
Надам се да вам је овај водич био користан. Сада када знате све о израчунавању временске разлике у Python-у, време је да увежбате своје вештине.
Срећно учење и кодирање!
Научите како се пише код за проверу једнакости или неједнакости или направите игру змија у Python-у овде.