Модуль часу ў 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

Гэта катэгорыя аргументаў, якія могуць быць прыняты рознымі метадамі. У яго няма ніякіх варыянтаў. Гэта картэж з найменным інтэрфейсам. Прасцей кажучы, элементы гэтага класа могуць быць даступныя як па імені, так і па нумары індэкса.

Ён складаецца з наступных атрыбутаў.Модуль часу ў 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

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 = час.мясцовы час (секунды)

друк(«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(час_радок, «%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. Канвертуйце ў зручны фармат. Больш за тое, праграміст сам можа ўсталёўваць, якія элементы будуць адлюстроўвацца і ў якой паслядоўнасці. 

Ёсць таксама шэраг іншых магчымасцяў, але сёння мы прааналізавалі самыя асноўныя з іх. Яны спатрэбяцца практычна ў любой праграме, якая так ці інакш працуе з часам. Поспехаў.

Пакінуць каментар