Времеви модул в Python 3. Основни методи, шаблони, примери

Почти всяка програма използва време. В Python за това е разработена отделна библиотека – пътизползвани за извършване на различни действия с него. За да работи, първо трябва да се декларира в началото на кода. Този ред се използва за това:

време за импортиране

Нека разгледаме различни варианти за правилното използване на този модул на практика. 

Определяне на броя секунди от епохата

За да изпълните тази задача, има функция път(), който не приема параметри. Върнатата му стойност е колко секунди са изминали от 1 януари 1970 г. В Python това време се нарича начало на епоха. Поне в операционните системи от фамилията Unix.

Що се отнася до Windows, датата е същата, но може да има проблеми с отрицателни стойности, които са били преди тази дата. 

Използваната часова зона е UTC.

време за импортиране

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

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

Сложността на тази функция е, че не показва точно датата, а само броя секунди. За да конвертирате във формат, познат на всички, трябва да използвате точна информация. За целта се използва функцията time.ctime().

Връщане на дата, час в обичайния формат

За да върнете времето в обичайния формат, има метод time.ctime(). Скобите показват променлива или число, показващо броя секунди, изминали от началото на епохата. Този метод връща всички характеристики на дата и час, включително дата, година, брой часове, минути, секунди и ден от седмицата.

Тази функция може да се използва и без аргументи. В този случай връща текущата дата, час и т.н.

Ето кодов фрагмент, който демонстрира това.

време за импортиране

печат (време.cвреме())

Вторник, 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)

печат (време_низ)

Ако стартирате този код, ще се покажат текущата дата и час. Форматът и последователността на елементите могат да се променят. Те са както следва:

  1. %Y е годината.
  2. %m е месецът.
  3. %d – ден.
  4. %H – време.
  5. %M – минути.
  6. %S – секунда.

Съответно можете да направите така, че изходът да е изключително от месеца и деня. За да направите това, просто не е необходимо да давате команда за показване на годината. Тоест, запишете в горната формула като аргумент %m/%d и това е всичко. Или обратното, %d/%m. 

Всъщност броят на низовите литерали е много по-голям. Ето таблица, където те са описани подробно.Времеви модул в Python 3. Основни методи, шаблони, примери

Отлагане на нишка за определен брой секунди

За целта се използва функцията сън (). Доста голям блок от програмни задачи е свързан с течението на времето. Понякога трябва да отложите следващата стъпка за определено време. Например, ако трябва да взаимодействате с база данни, чиято обработка отнема определено време.

Като аргумент методът използва стойност, която изразява броя секунди за забавяне на следващата стъпка от алгоритъма.

Например в този фрагмент забавянето е 10 секунди.

време за импортиране

пауза = 10

печат («Програмата стартира...»)

time.sleep(пауза)

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

В резултат на това ще получим това:

Програмата стартира…

Минаха 10 секунди.

Както виждаме от изхода, програмата първо съобщава, че е стартирана. И след десет секунди тя написа, че това време е минало.

Функцията ви позволява да зададете продължителността на паузата в милисекунди. За да направим това, използваме дробни стойности на аргумента на функцията сън. Например 0,1. Това означава, че забавянето ще бъде 100 милисекунди.

Вземете местно време

Използвайки функцията localtime(), програмата получава броя секунди от началото на епохата в определена часова зона. 

Нека дадем примерен код за яснота.

време за импортиране

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

печат (“резултат:”, резултат)

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

print(«tm_hour:», result.tm_hour)

Върнете struct_time в UTC въз основа на броя секунди от епохата

Тази задача се постига с помощта на time.gmtime(). метод. Ще стане по-ясно, ако дадем пример.

време за импортиране

резултат = време.gmtime(1575721830)

печат (“резултат:”, резултат)

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

print(«tm_hour:», result.tm_hour)

Ако включите тази последователност от действия, тогава ще се покаже набор от елементи, свързани с час, година и часова зона.

Върнете броя секунди от началото на епохата с автоматично преобразуване в местно време

Ако сте изправени пред такава задача, тя се изпълнява с помощта на метода mktime(), което отнема struct_time. След това изпълнява обратното действие на функцията местно време(). Тоест преобразува времето според местната часова зона в броя секунди, изминали от началото на епохата, коригирани за часовата зона.

Функциите mktime() и localtime() са тясно преплетени. Този кодов фрагмент ясно демонстрира това. Нека да го разгледаме, за да разберем по-задълбочено как работи. 

време за импортиране

секунди = 1575721830

# връща struct_time

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

печат («t1: «, t)

# връща секунди от struct_time

s = time.mktime(t)

печат («ns:», секунди)

Виждаме, че променливата секунди е присвоено 1575721830 секунди от епохата. Първо, програмата получава точната дата, час и други параметри, въз основа на тази стойност, поставя я в променлива tи след това преобразува съдържанието му в променлива s.

След това отбива нов ред и показва броя на секундите в конзолата. Можете да проверите дали това ще бъде същото число, което е присвоено на променливата seconds.

Изходна дата от 9 числа, които се отнасят до struct_time

Да предположим, че имаме 9 числа, представляващи годината, месеца, датата, деня от седмицата и редица други стойности, и трябва да ги комбинираме в един низ. За целта се използва функцията asctime(). Тя приема или е готова struct_time, или всеки друг кортеж от 9 стойности, които означават същото. След това се връща низ, който е дата, час и редица други параметри. 

Много е удобно да се използва този метод, за да се съберат различни данни, определени от потребителя, в една променлива..

Например, това може да е програма, в която потребителят посочва отделно ден, месец, година, ден от седмицата и други данни относно регистрацията за събитие. След това получената информация се въвежда в базата данни и след това се издава на друго лице, което я поиска.

Получаване на час и дата въз основа на низ на Python

Да предположим, че потребителят е посочил различни данни и ние трябва да ги комбинираме в един ред във формата, който човекът е въвел, и след това да направим копие в друга променлива и да го изградим отново в стандартен формат там. За целта се използва функцията time.strptime().

Той взема променлива, в която е посочена тази стойност, и връща вече познатата ни стойност struct_time.

За по-голяма яснота ще напишем такава програма.

време за импортиране

time_string = «15 юни 2019 г.»

резултат = time.strptime(time_string, «%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. Конвертирайте в удобен формат. Освен това програмистът сам може да зададе кои елементи да се показват и в каква последователност. 

Има и редица други възможности, но днес анализирахме най-основните. Те ще бъдат полезни в почти всяка програма, която по някакъв начин работи с времето. Късмет.

Оставете коментар