Як обчислити різницю в часі в Python

| | 0 Comments| 10:20 AM
Categories:

Працюючи з датами та часом у Python, вам часто потрібно обчислити різницю в часі. У цьому посібнику ви дізнаєтеся, як обчислити різницю між двома часовими мітками в годинах, хвилинах і секундах.

До кінця цього підручника ви навчитеся:

  • як використовувати модуль Python datetime для роботи з датами та часом,
  • що таке об’єкти timedelta і чим вони корисні, а також
  • обчислити різницю в часі між будь-якими двома часовими мітками — у годинах, хвилинах і секундах.

Давайте розпочнемо.

Як використовувати модуль Python datetime

Щоб працювати з датами та часом у Python, ви будете використовувати модуль datetime. Модуль datetime є частиною стандартної бібліотеки Python. Отже, ви можете негайно імпортувати його у своє робоче середовище, ось так:

import datetime

Щоб обчислити різницю в часі, потрібно створити дві різні позначки часу. Ви можете створити:

  • два об’єкти дати,
  • два об’єкти часу, або
  • комбінація дати й часу — об’єкти datetime.

Як створити об’єкт дати в Python

Давайте імпортуємо клас дати з модуля datetime. Щоб створити об’єкт дати в Python, можна використати загальний синтаксис datetime.date(<рік>,<місяць>,<день>). Ось приклад створення об’єкта дати date1:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# Output: 2022-03-27

Ви можете спробувати код на компіляторі Python techukraine.net для перевірки. Або встановіть Python на свій комп’ютер.

Як показано вище, коли ви друкуєте дату, вона форматується у форматі РРРР-ММ-ДД для дат.

Примітка. Обов’язково вказуйте місяць як ціле число без нулів на початку. Ймовірно, ви звикли додавати нуль до місяця, коли записуєте дати.

Наприклад, щоб вказати дату в червні, шостому місяці року: використовуйте 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.

  Конференц-дзвінки до 5 осіб із Chrome або вашого телефону

Як створити об’єкт часу в Python

Щоб створити об’єкт часу, давайте імпортуємо клас часу. Будь-який об’єкт часу Python можна створити за допомогою класу часу, вказавши такі атрибути класу: година, хвилина, секунда та мікросекунда.

Однак усі ці атрибути є необов’язковими. Якщо ви не вкажете певний атрибут, скажімо, другий, за замовчуванням він має значення 0.

У наведеному нижче фрагменті коду показано, як можна створити об’єкт часу time1. Як і з об’єктом дати, ви можете роздрукувати об’єкт часу, щоб побачити відформатований час.

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# Output: 13:27:45.004600

Як створити об’єкт datetime в Python

Як бачите, об’єкт date не має інформації про час. А об’єкт time не містить інформації про дату.

Однак на практиці вам знадобляться і дата, і інформація про час. Тому замість цього рекомендується використовувати клас datetime.

Ви можете отримати доступ до класу datetime і створити об’єкти datetime у Python, як показано нижче:

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. Цей об’єкт timedelta має корисні атрибути та методи, які можуть допомогти обчислити різницю в часі.

  Як працюють програми для ідентифікації музики, такі як Shazam?

Давайте обчислимо різницю між двома об’єктами 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 перевіряється на належність до класу timedelta за допомогою вбудованого Python тип() функція.

Тепер давайте закодуємо інший приклад.

Як знайти різницю в часі між двома датами

Розглянемо простий, але цікавий приклад.

Проблема: обчислити різницю в часі між поточною датою (сьогодні) і вашим днем ​​народження.
Для цього встановіть сьогодні як першу позначку часу, а ваш день народження як другу позначку часу.

Для початку давайте створимо два об’єкти datetime:

  • один на сьогодні, назвемо це сьогодні, і
  • ще один на твій день народження, назвемо це день народження

Клас datetime має метод now(), який дає вам поточну локальну дату та час. Тож давайте використаємо це сьогодні — нашу контрольну дату.

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, який є об’єктом timedleta, як пояснювалося раніше. Просто відніміть сьогоднішній день від свого дня народження, і ви отримаєте різницю в часі.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# Output
Your birthday is in 220 days, 2:46:00.127416

Щоб дізнатися кількість днів, що залишилися, використовуйте атрибут days у time_diff, як показано:

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# Output
Your birthday is in 220 days.

Як знайти різницю в часі в секундах

Давайте тепер обчислимо, скільки секунд залишилося до вашого дня народження.

  Як видалити Boxbe

Щоб обчислити загальну різницю в часі в секундах, використовуйте метод total_seconds() об’єкта timedelta time_diff.

tsecs = time_diff.total_seconds()
print(f"Your birthday is {tsecs} seconds away.")

# Output
Your birthday is 19017960.127416 seconds away.

Ну, це надто довго чекати!

Тим не менш, тепер ви знаєте, як обчислити різницю в часі між будь-якими двома часовими мітками в секундах.

Давайте тепер повернемося до деяких основ і запишемо наступне. Доба складається з 24 годин, година триває 60 хвилин, а 60 секунд складають хвилину.

Це підсумовано на зображенні нижче:

Години, хвилини та секунди

Отже, щоб перетворити секунди на хвилини, години та дні, ви можете скористатися наступною таблицею та розділити на відповідний коефіцієнт перетворення.

Таблиця перетворення часу

У наступних розділах давайте перетворимо різницю в часі в секундах на хвилини та години.

Як знайти різницю в часі в хвилинах

Щоб отримати різницю в часі в хвилинах, вам потрібно лише розділити загальну кількість секунд на 60.

Давайте поділимо tsecs на 60 і збережемо це в змінній під назвою tmins, ось так:

tmins = tsecs/60
print(f"Your birthday is {tmins} minutes away.")

# Output
Your birthday is 316966.0021236 minutes away.

Як знайти різницю в часі в годинах

Тепер, коли ви обчислили різницю в часі в хвилинах, ви можете розділити її на коефіцієнт 60, щоб отримати різницю в годинах. Або ви можете розділити загальну кількість секунд на 60*60 = 3600.

thrs = tsecs/(60*60)
print(f"Your birthday is {thrs} hours away.")

# Output
Your birthday is 5282.76670206 hours away.

Отже, тепер ви навчилися обчислювати різницю в часі в будь-яких вибраних вами одиницях.

Висновок

У цьому посібнику ви дізналися, як:

  • створювати та працювати з датами та часом за допомогою модуля datetime Python,
  • використовуйте об’єкти timedelta, щоб отримати проміжок часу або різницю в часі
  • обчислювати різницю в часі в секундах, хвилинах і годинах.

Сподіваюся, цей посібник був для вас корисним. Тепер, коли ви знаєте все про обчислення різниці в часі в Python, настав час застосувати свої навички на практиці.

Гарного навчання та програмування!

Дізнайтеся, як написати дорівнює або не дорівнює коду або створіть гру змійки на python тут.