Модуль часу в Python 3. Основні методи, шаблони, приклади

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

час імпорту

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

Визначення кількості секунд від епохи

Для виконання цього завдання існує функція час(), яка не приймає параметрів. Його значення, що повертається, — це кількість секунд, що минули з 1 січня 1970 року. У Python цей час називається початком епохи. Принаймні в операційних системах сімейства Unix.

Що стосується Windows, то дата та ж, але можуть бути проблеми з негативними значеннями, які були до цієї дати. 

Використовується часовий пояс UTC.

час імпорту

секунди = time.time()

print(“Секунди з епохи =”, секунди)

Складність цієї функції полягає в тому, що вона відображає не точну дату, а лише кількість секунд. Щоб конвертувати в звичний для всіх формат, потрібно використовувати точну інформацію. Для цього використовується функція time.ctime().

Повернення дати, часу в звичайному форматі

Щоб повернути час у звичному форматі, є спосіб time.ctime(). Дужки вказують на змінну або число, що вказує кількість секунд, що минули з початку епохи. Цей метод повертає всі характеристики дати та часу, включаючи дату, рік, кількість годин, хвилин, секунд і день тижня.

Ця функція також може використовуватися без аргументів. У цьому випадку він повертає поточну дату, час тощо.

Ось фрагмент коду, який демонструє це.

час імпорту

print(time.ctime())

Вт, 23 жовтня 10:18:23 2018

Останній рядок – це те, що друкується на консолі, де запущено інтерпретатор Python. Метод автоматично форматує отриману кількість секунд у звичну для користувача форму. Правда, всі описані вище елементи використовуються рідко. Як правило, потрібно отримати або тільки час, або тільки сьогоднішню дату. Для цього використовується окрема функція – strftime(). Але перш ніж розглядати це, нам потрібно розібрати клас time.struct_time.

час класу.struct_time

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

Він складається з наступних атрибутів.Модуль часу в Python 3. Основні методи, шаблони, приклади

Увага! На відміну від ряду інших мов програмування, тут місяць може мати значення від 1 до 12, а не від нуля до 11.

Повернення певного формату

Використання функції strftime () ви можете отримати рік, місяць, день, годину, хвилини, секунди окремо та повернути їх у текстовий рядок. Потім його можна роздрукувати користувачеві за допомогою функції друкувати () або оброблені іншим способом.

В якості аргументу функція може приймати будь-яку змінну, яка приймає значення, що повертається іншими функціями цього модуля. Наприклад, ви можете передати йому місцевий час (про нього мова піде далі), звідки він витягне потрібні дані.

Ось фрагмент коду, де ми це робимо.

час імпорту

named_tuple = time.localtime() # отримати struct_time

time_string = time.strftime(«%m/%d/%Y, %H:%M:%S», named_tuple)

print(рядок_часу)

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

  1. %Y – це рік.
  2. %m це місяць.
  3. %d – день.
  4. %H – час.
  5. %M – хвилини.
  6. %S – секунда.

Відповідно, можна зробити так, щоб виводив виключно місяць і число. Для цього просто не потрібно давати команду на відображення року. Тобто запишіть у наведеній вище формулі як аргумент %m/%d, і все. Або навпаки, %d/%m. 

Насправді рядкових літералів набагато більше. Ось таблиця, де вони детально описані.Модуль часу в Python 3. Основні методи, шаблони, приклади

Відкласти потік на певну кількість секунд

Для цього використовується функція спати (). Досить великий блок завдань програмування пов'язаний з плином часу. Іноді доводиться відкладати наступний крок на певний час. Наприклад, якщо вам потрібно взаємодіяти з базою даних, для обробки якої потрібен певний час.

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

Наприклад, у цьому фрагменті затримка становить 10 секунд.

час імпорту

пауза = 10

print(«Програму запущено…»)

time.sleep (пауза)

print(str(пауза) + » минуло секунд.»)

В результаті ми отримаємо ось що:

Програма розпочата…

Минуло 10 секунд.

Як ми бачимо з результату, програма спочатку повідомляє, що вона запущена. А через десять секунд написала, що цей час минув.

Функція дозволяє вказати тривалість паузи в мілісекундах. Для цього використовуємо дробові значення аргументу функції спати. Наприклад, 0,1. Це означає, що затримка становитиме 100 мілісекунд.

Отримати місцевий час

За допомогою функції localtime() програма отримує кількість секунд від початку епохи в певному часовому поясі. 

Для наочності наведемо приклад коду.

час імпорту

результат = time.localtime(1575721830)

print(“результат:”, результат)

print(«nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

Повертає struct_time у UTC на основі кількості секунд після епохи

Це завдання досягається за допомогою time.gmtime(). метод. Буде зрозуміліше, якщо навести приклад.

час імпорту

результат = time.gmtime(1575721830)

print(“результат:”, результат)

print(«nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

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

Повертає кількість секунд від початку епохи з автоматичним перетворенням на місцевий час

Якщо перед вами стоїть таке завдання, то воно реалізується за допомогою методу mktime (), який бере struct_time. Після цього він виконує дію, зворотну функції місцевий час(). Тобто він перетворює час відповідно до місцевого часового поясу в кількість секунд, що минули від початку епохи, скориговану для часового поясу.

Функції mktime() і localtime() тісно переплетені. Цей фрагмент коду це чітко демонструє. Давайте подивимося на це, щоб глибше зрозуміти, як це працює. 

час імпорту

секунд = 1575721830

# повертає struct_time

t = time.localtime (секунди)

print(«t1: «, t)

# повертає секунди з struct_time

s = time.mktime(t)

print(«ns:», секунди)

Ми бачимо, що змінна seconds було призначено 1575721830 секунд з епохи. Спочатку програма отримує точну дату, час та інші параметри, на основі цього значення поміщає його в змінну t, а потім перетворює його вміст у змінну s.

Після цього відбиває новий рядок і виводить на консоль кількість секунд. Ви можете перевірити, що це буде те саме число, яке було призначено змінній seconds.

Виведення дати з 9 чисел, які відносяться до struct_time

Припустимо, що у нас є 9 чисел, що представляють рік, місяць, число, день тижня та ряд інших значень, і нам потрібно об’єднати їх в один рядок. Для цього використовується функція asctime(). Вона приймає або готова struct_time, або будь-який інший кортеж із 9 значень, який означає те саме. Після цього повертається рядок, який є датою, часом і низкою інших параметрів. 

Цей метод дуже зручно використовувати для того, щоб об’єднати в одну змінну різні дані користувача..

Наприклад, це може бути програма, в якій користувач окремо вказує день, місяць, рік, день тижня та інші дані щодо реєстрації на захід. Після цього отримана інформація вноситься до бази даних, а потім видається іншій особі, яка її запитує.

Отримання часу та дати на основі рядка Python

Припустимо, користувач вказав різні дані, і нам потрібно об’єднати їх в один рядок у форматі, який ввела особа, а потім зробити копію в іншу змінну та перебудувати її в стандартний формат там. Для цього використовується функція time.strptime().

Він приймає змінну, в якій зазначено це значення, і повертає вже знайоме нам значення struct_time.

Для наочності напишемо таку програму.

час імпорту

time_string = «15 червня 2019 р.»

результат = time.strptime(рядок_часу, «%d %B, %Y»)

друк (результат)

Вгадайте, який буде вихід? Спробуйте вгадати, не дивлячись на нижню лінію. А потім перевірити відповідь.

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=166, tm_isdst=-1)

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

  1. Призупинити виконання програми на визначений час.
  2. Показати час, що минув з епохи, у секундах. Ця інформація може бути використана для підсумовування часу або виконання інших математичних операцій з ним.
  3. Конвертувати в зручний формат. Більш того, програміст сам може встановлювати, які елементи будуть відображатися і в якій послідовності. 

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

залишити коментар