Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Moduly řetězců a času
Modul Datum/Čas
Cíl
Upravte záznamy a nastavte termíny odeslání zásob pomocí funkcí modulu Datum a čas.
Nižší patro přístavby nové stavební oblasti je sklad obsahující některé z nedávno doručených zásob, které jsou zabalené a připravené k odeslání do oblastí kolem novostavby. Je třeba je označit správnými daty a časy a zajistit, aby všechny již nanesené štítky obsahovaly veškeré relevantní informace. Místo ručního psaní a formátování data a času je však k dispozici mnohem rychlejší způsob, a to pomocí modulu datum a čas.
Modul datum a čas se importuje pomocí zápisu import datetime, což zpřístupní řadu mocných funkcí, které vám umožní číst a nastavovat formátované časy a data, která můžete uložit do objektů. Můžete také použít: from datetime import timezone, timedelta pro nastavení časových zón. Importem tohoto modulu získáte přístup k následujícím funkcím:
datetime.datetime(): Umožňuje nastavit a uložit čas dle vašeho výběru, bere několik argumentů následovně:year,month,day,hour,minute,second,microsecond,timezone. Nemusíte zadávat všechny argumenty, ale pouze ty, které chcete použít.datetime.datetime.now(): Vrací aktuální datum a čas, jak by byl zobrazen na hodinách.datetime.datetime.date(): Vrací pouze datum z datetime, bez času.datetime.datetime.time(): Vrací pouze čas z datetime, bez data.datetime.datetime.timestamp(): Vrací časové razítko datetime jako UNIX kód.timezone(): Umožňuje nastavit časovou zónu pro použití s argumenty data a času.datetime.strftime(): Umožňuje extrahovat specifické informace o datu a čase a formátovat je dle vašeho přání pomocí specifických kódů. Pro naše účely budeme používat následující kódy:"%a": Krátký název dne v týdnu"%d": Den v měsíci"%B": Název měsíce, plně napsaný"%I": Hodina, 12-hodinový formát"%M": Minuta"%p": Odpoledne/dopoledne, AM/PM"%x": Místní formát data"%X": Místní formát času"%j": Den v roce"%U": Týden v roce"%z": UTC časová zóna
Na začátek se vydejte k lehké X značce a otočte se ke stolu, použijte funkci read() pro kontrolu dat balení zásilek, stejně jako začátku a konce projektů. Poznamenejte si počáteční a koncová data uvedená v dokumentu (měsíc/den/rok). První tři datové body uvedené v poznámce, stejně jako časová zóna, jsou již předvyplněny v editoru kódu pro snadné použití v následných funkcích.
Na stejném místě vytvořte proměnnou s názvem today a uložte do ní návratovou hodnotu datetime.datetime.now(). Použijte str() pro převedení hodnoty na řetězec, aby byl čitelný, například takto: today = str(datetime.datetime.now()). Použijte funkci display() pro zanesení dnešního data do poznámky, čímž se nastaví datum pro odeslání zásilek a můžete začít doplňovat chybějící datové body do potřebných oblastí.
Vydejte se k zlaté X značce vedle stolu, kde budeme počítat a zaznamenávat počet dnů, které tento projekt zabere. V editoru jsou již zapsány dvě proměnné s názvy start a end, které uchovávají datetime. Zapište do příslušných polí začáteční a koncová data, která jste si předtím přečetli. Vytvořte proměnnou s názvem result a uložte do ní výsledek odečtení proměnných end a start. Použijte funkci str() k převedení hodnoty do čitelného řetězcového formátu, například takto: result = str(end-start). Použijte funkci write() k zaznamenání proměnné result, čímž označíte, jak dlouho to potrvá.
Odtud se přesuneme k zlaté X značce vedle červeného koberce a dále k X značkám vedle beden červeného koberce v levém sloupci. Zde budeme přidávat specifické části dat balení, které chybí na bednách, pomocí datetime(). V editoru bude již předvyplněné datum přiřazené do proměnné red_date, ze kterého vytáhneme různé údaje a použijeme je k označení beden.
Pro červené koberce:
-
Na zlaté X značce, otočte se k bednám a vytvořte proměnnou
red_days, do které uložíte datum bez času pomocídate()z proměnnéred_datea převedete ho pomocístr(), například takto:red_days = str(red_date.date()). Použijte funkciwrite()pro označení beden pomocíred_days. -
Na lehké X značce, otočte se k bednám a vytvořte proměnnou
red_time, do které uložíte čas bez data pomocítime()z proměnnéred_datea převedete ho pomocístr(), například takto:red_time = str(red_date.time()). Použijte funkciwrite()pro označení beden pomocíred_time. -
Na tmavé X značce, otočte se k bednám a vytvořte proměnnou
red_timestamp, do které uložíte časové razítko vypočítané z proměnnéred_date, například takto:red_timestamp = red_date.timestamp(). Použijte funkciwrite()pro označení beden pomocíred_timestamp.
Následuje přesun k X značkám před bedenami na modrém koberci. Stejně jako dříve je zde řada tří (3) barevných X značek, v tomto případě odkazujících na předvyplněnou proměnnou blue_date pro dokončení štítků. Projděte sloupec a použijte funkci strftime() k přidání chybějících prvků do štítků zásilek. Na rozdíl od předchozích funkcí tato vyžaduje specifický kód pro extrakci a formátování prvků v cílovém datu. Například, pokud chceme získat den v týdnu pro proměnnou blue_date, použijeme kód "%a" s funkcí strftime() takto: blue_date.strftime("%a").
Pro X značky vedle beden na modrém koberci použijte funkci strftime() se specifickým požadovaným kódem. Prohlédněte si předchozí seznam kódů dle požadavků. Pro modré koberce:
-
Na zlaté X značce, otočte se k bednám a vytvořte proměnnou
blue_weekday, do které uložíte den v týdnu pomocístrftime()z proměnnéblue_date, například takto:blue_day = blue_date.strftime("%a"). Vytvořte další proměnnou s názvemblue_daya uložte do ní den v měsíci pomocístrftime()z proměnnéblue_date. Vytvořte další proměnnou s názvemblue_montha uložte do ní název měsíce, napsaný celý, pomocístrftime()z proměnnéblue_date. Vložte proměnnéblue_weekday,blue_dayablue_monthdo předpřipravené funkcewrite(). -
Na lehké X značce, otočte se k bednám a vytvořte proměnnou
blue_hour, do které uložíte hodinu, 12-hodinový formát, pomocístrftime()z proměnnéblue_date. Vytvořte další proměnnou s názvemblue_minutea uložte do ní minutu pomocístrftime()z proměnnéblue_date. Vytvořte další proměnnou s názvemblue_meridiana uložte do ní meridián, AM/PM, pomocístrftime()z proměnnéblue_date. Vložte proměnnéblue_hour,blue_minuteablue_meridiando předpřipravené funkcewrite(). -
Na tmavé X značce, otočte se k bednám a vytvořte proměnnou
blue_local_date, do které uložíte místní formát data, pomocístrftime()z proměnnéblue_date. Vytvořte další proměnnou s názvemblue_local_timea uložte do ní místní formát času pomocístrftime()z proměnnéblue_date. Vložte proměnnéblue_local_date,blue_local_timeablue_meridiando předpřipravené funkcedisplay().
Nakonec se přesuneme k zlaté X značce vedle zeleného koberce a dále k X značkám vedle beden na zeleném koberci v pravém sloupci. Zde budeme pokračovat v přidávání specifických částí dat balení, které chybí na bednách, pomocí strftime(). V editoru bude přiřazeno předvyplněné datum do proměnné green_date, ze kterého vytáhneme různé údaje a použijeme je k označení beden.
Pro zelené koberce:
-
Na zlaté X značce, otočte se k bednám a vytvořte proměnnou
green_day, do které uložíte den v roce pomocístrftime()z proměnnégreen_date. Použijte funkciwrite()k označení beden pomocígreen_day. -
Na lehké X značce, otočte se k bednám a vytvořte proměnnou
green_week, do které uložíte týden v roce pomocístrftime()z proměnnégreen_date. Použijte funkciwrite()k označení beden pomocígreen_week. -
Na tmavé X značce, otočte se k bednám a vytvořte proměnnou
green_timezone, do které uložíte UTC časovou zónu pomocístrftime()z proměnnégreen_date. Použijte funkciwrite()k označení beden pomocígreen_timezone.
Jakmile budou všechny štítky na X značkách vedle barevných koberců zaznamenány, úroveň bude dokončena.