Курс по усъвършенствано разработване с Python
Глава
>
Ниво
Модули за низове и време
Модул за дата/време
Цел
Настройте записите и определете датите за доставка на стоките, използвайки функциите на модула Date & Time.
На по-ниския етаж на крилото на новозградената зона се намира склад, съдържащ някои от наскоро доставените консумативи, които са опаковани и готови за изпращане към районите около новата постройка. Те трябва да бъдат етикетирани с правилните дати и часове, като също така се уверите, че всички вече нанесени етикети съдържат цялата необходима информация. За да направим това, можем да отделим време за ръчно записване и форматиране на датите и часовете, но има много по-бърз начин да постигнем резултата, използвайки модула за дата и час.
Модулът за дата и час се импортира с писането на import datetime, което отключва серия от мощни функции, позволяващи да четете и задавате форматирани часове и дати, които можете да съхранявате в обекти. Можете също да използвате: from datetime import timezone, timedelta, за да зададете часови зони. Следните функции се активират при импортиране на модула:
datetime.datetime(): Позволява ви да зададете и съхраните избран от вас час; приема няколко аргумента както следва:year,month,day,hour,minute,second,microsecond,timezone. Не е необходимо да въведете всички аргументи, а само тези, които желаете да използвате.datetime.datetime.now(): Връща текущата дата и час, както биха се показали на часовник.datetime.datetime.date(): Връща само датата от datetime, без включен час.datetime.datetime.time(): Връща само часа от datetime, без включена дата.datetime.datetime.timestamp(): Връща времевия печат на datetime като UNIX код.timezone(): Позволява ви да зададете часова зона за използване с вашите аргументи за дата и час.datetime.strftime(): Позволява ви да извлечете специфична информация за датата и часа и да я форматирате по ваше усмотрение с помощта на конкретни кодове. За нашите цели ще използваме следните кодове:"%a": Ден от седмицата (съкратено)"%d": Ден от месеца"%B": Име на месеца (напълно изписано)"%I": Час (12-часов цикъл)"%M": Минута"%p": Период (AM/PM)"%x": Локален формат на датата"%X": Локален формат на часа"%j": Ден от годината"%U": Седмица от годината"%z": Часова зона UTC
За начало, отидете до светлия X знак и обърнете се към бюрото. Използвайте функцията read() за да проверите датите на опаковане за пратките, както и датите за начало и край на проектите. Обърнете внимание на посочените в документа дати за начало и край (месец/ден/година). Първите три (3) данни, написани в мемото, както и часовата зона са предварително въведени в редактора за улеснение в по-късните функции.
В същото пространство, създайте променлива с име today и съхранете върнатата стойност от datetime.datetime.now(). Използвайте str() за да конвертирате стойността в низ, с цел да бъде четима, както следва: today = str(datetime.datetime.now()). Използвайте функцията display() за да запишете датата от днес в мемото; по този начин датата за разпределение на пратките се задава и можете да започнете да добавяте липсващите данни в необходимите области.
Отидете до златния X знак до бюрото, където ще изчислим и запишем броя на дните, необходими за изпълнение на проекта. В редактора има две променливи с имена start и end, които съхраняват datetime. Запишете датите за начало и край, които предварително сте прочели, в предоставените полета. Създайте променлива с име result и съхранете резултата от изваждането на променливите end и start. Използвайте функцията str() за да конвертирате стойността в четим низ, както следва: result = str(end-start). Използвайте функцията write() за да запишете променливата result и да отбележите колко време ще отнеме това.
Оттук ще преминем към златния X знак до червеното килимче и след това към X маркираните до кутиите с червен килим в лявата колона. Тук ще добавяме специфични части от датите на опаковане, които липсват от кутиите, използвайки datetime(). В редактора ще има предварително зададена дата, присвоена към променливата red_date, от която ще извлечем различни части от информацията и ще я използваме за етикетиране на кутиите.
За червените килими:
- На златния X знак, обърнете се към кутиите и създайте променлива с име
red_days, в която съхранете датата без час, използвайкиdate()от променливатаred_dateи я конвертирайте сstr(), както следва:red_days = str(red_date.date()). Използвайте функциятаwrite()за да етикетирате кутиите сred_days. - На светлия X знак, обърнете се към кутиите и създайте променлива с име
red_time, в която съхранете часа без дата, използвайкиtime()от променливатаred_dateи я конвертирайте сstr(), както следва:red_time = str(red_date.time()). Използвайте функциятаwrite()за да етикетирате кутиите сred_time. - На тъмния X знак, обърнете се към кутиите и създайте променлива с име
red_timestamp, в която съхранете времевия печат, изчислен от променливатаred_date, както следва:red_timestamp = red_date.timestamp(). Използвайте функциятаwrite()за да етикетирате кутиите сred_timestamp.
След това преминете към X маркираните пред кутиите със син килим. Както преди, има серия от три (3) цветни X знака, които в този случай препращат към предварително зададената променлива blue_date за завършване на етикетирането. Прекарайте през колоната и използвайте функцията strftime() за да добавите липсващите елементи към етикетите на пратките. За разлика от предишните функции, тази изисква специфичен код за извличане и форматиране на елементите от целевата дата. Например, ако искаме да получим деня от седмицата за променливата blue_date, ще използвате кода "%a" с функцията strftime(), както следва: blue_date.strftime("%a").
За X маркираните до кутиите със син килим, използвайте функцията strftime() със специфичния необходим код. Прегледайте предварително изброения списък с кодове в зависимост от изискванията.
За сините килими:
- На златния X знак, обърнете се към кутиите и създайте променлива с име
blue_weekday, в която съхранете деня от седмицата, използвайкиstrftime()от променливатаblue_date, както следва:blue_day = blue_date.strftime("%a"). Създайте друга променлива с имеblue_dayи съхранете деня от месеца, използвайкиstrftime()от променливатаblue_date. Създайте още една променлива с имеblue_monthи съхранете името на месеца, написано изцяло, използвайкиstrftime()от променливатаblue_date. Въведете променливитеblue_weekday,blue_dayиblue_monthв предварително зададената функцияwrite(). - На светлия X знак, обърнете се към кутиите и създайте променлива с име
blue_hour, в която съхранете часа (12-часов цикъл), използвайкиstrftime()от променливатаblue_date. Създайте друга променлива с имеblue_minuteи съхранете минутата, използвайкиstrftime()от променливатаblue_date. Създайте още една променлива с имеblue_meridianи съхранете AM/PM, използвайкиstrftime()от променливатаblue_date. Въведете променливитеblue_hour,blue_minuteиblue_meridianв предварително зададената функцияwrite(). - На тъмния X знак, обърнете се към кутиите и създайте променлива с име
blue_local_date, в която съхранете локалния формат на датата, използвайкиstrftime()от променливатаblue_date. Създайте друга променлива с имеblue_local_timeи съхранете локалния формат на часа, използвайкиstrftime()от променливатаblue_date. Въведете променливитеblue_local_date,blue_local_timeиblue_meridianв предварително зададената функцияdisplay().
Накрая, ще преминем към златния X знак до зеленото килимче и ще се насочим към X маркираните до кутиите със зелен килим в дясната колона. Тук ще продължим да добавяме специфични части от датите на опаковане, които липсват от кутиите, използвайки strftime(). В редактора ще има предварително зададена дата, присвоена към променливата green_date, от която ще извлечем различни части от информацията и ще я използваме за етикетиране на кутиите.
За зелените килими:
- На златния X знак, обърнете се към кутиите и създайте променлива с име
green_day, в която съхранете деня от годината, използвайкиstrftime()от променливатаgreen_date. Използвайте функциятаwrite()за да етикетирате кутиите сgreen_day. - На светлия X знак, обърнете се към кутиите и създайте променлива с име
green_week, в която съхранете седмицата от годината, използвайкиstrftime()от променливатаgreen_date. Използвайте функциятаwrite()за да етикетирате кутиите сgreen_week. - На тъмния X знак, обърнете се към кутиите и създайте променлива с име
green_timezone, в която съхранете UTC часовата зона, използвайкиstrftime()от променливатаgreen_date. Използвайте функциятаwrite()за да етикетирате кутиите сgreen_timezone.
След като всички етикети на X маркираните до цветовите килими бъдат записани, нивото ще бъде завършено.