Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Karakterlánc és idő modulok
Dátum/Idő modul
Cél
Állítsd be a feljegyzéseket, és állítsd be a szállítási dátumokat az ellátmányhoz a Date & Time modul függvényeinek használatával.
A new construction area melléképületének alsó emelete egy raktár, amely az újonnan érkezett, csomagolt és a környező építkezési területekre szállításra kész ellátmány egy részét tartalmazza. Meg kell címkézni őket a megfelelő dátumokkal és időpontokkal, valamint biztosítani kell, hogy minden már alkalmazott címke tartalmazza a szükséges információkat. Ehhez lehetséges, hogy kézzel írjuk fel és formázzuk a dátumokat és időpontokat, de létezik egy sokkal gyorsabb mód is a date and time modul használatával.
A date and time modult az alábbi módon importálhatod: import datetime, ez aktivál egy sor erőteljes függvényt, amelyek lehetővé teszik, hogy olvasd és beállítsd a formázott időpontokat és dátumokat, melyeket objektumokban tárolhatsz. Használhatod továbbá a from datetime import timezone, timedelta kifejezést is az időzónák beállításához. Az alábbi függvények válnak elérhetővé a modul importálásával:
datetime.datetime(): Lehetővé teszi, hogy beállítsd és eltárold a választott időpontot, több argumentumot vár, mint például:year,month,day,hour,minute,second,microsecond,timezone. Nem szükséges az összes argumentumot megadni, csak azokat, amelyeket használni szeretnél.datetime.datetime.now(): Visszaadja az aktuális dátumodat és idődet, ahogy az egy órán megjelenne.datetime.datetime.date(): Csak a dátumot adja vissza, az idő nélkül.datetime.datetime.time(): Csak az időt adja vissza, a dátum nélkül.datetime.datetime.timestamp(): A datetime objektum UNIX időbélyegét adja vissza.timezone(): Lehetővé teszi, hogy beállíts egy időzónát a dátum és idő argumentumokhoz.datetime.strftime(): Lehetővé teszi, hogy a dátum és idő egyes elemeit kivond és a kívánt formátumba alakítsd meghatározott kódok segítségével. A mi céljainkhoz az alábbi kódokat fogjuk használni:"%a": A hét napja, rövidített formában"%d": A hónap napja"%B": A hónap neve, teljes formában"%I": Óra, 12 órás ciklusban"%M": Perc"%p": Déli/idő jelölés, AM/PM"%x": Helyi dátumformátum"%X": Helyi időformátum"%j": Az év napja"%U": Az év hete"%z": UTC időzóna
Kezdésként sétálj a világos X jelhez és fordulj az asztal felé, majd használd a read() függvényt a csomagolási dátumok, illetve a projektek kezdő- és befejezési dátumainak ellenőrzésére. Jegyezd fel a dokumentumban szereplő kezdő és befejező dátumokat (hónap/nap/év formátumban). A memóban található három (3) első adatpont, valamint az időzóna előre meg van írva a kódszerkesztőben a későbbi függvények könnyebb használhatósága érdekében.
Ugyanebben a térben hozz létre egy today nevű változót, és tárold el benne a datetime.datetime.now() függvény visszatérési értékét. Használd a str() függvényt az érték stringgé alakításához, így: today = str(datetime.datetime.now()). Ezután használd a display() függvényt, hogy a memóban lejegyezd a mai dátumot, amivel beállítod a szállítási kiosztások dátumát, és elkezdheted a hiányzó adatpontok hozzáadását a szükséges helyeken.
Sétálj az arany X jelhez az asztal mellett, ahol kiszámoljuk és lejegyzzük, hogy hány napot vesz igénybe ez a projekt. Két változó, start és end, már előre meg van írva a szerkesztőben, és datetime értékeket tárolnak. Írd be a korábban olvasott kezdő és befejező dátumokat a megadott helyekre. Hozz létre egy result nevű változót, és tárold el benne az end és start változók kivonásának eredményét. Használd a str() függvényt az érték olvasható string formátumba alakításához, így: result = str(end-start). Ezután a write() függvénnyel lejegyezzük a result változót, ezzel jelölve, hogy mennyi ideig tart a projekt.
Innen továbblépünk az arany X jelhez a vörös szőnyeg mellett, majd lefelé lépünk a bal oldali oszlopban lévő, vörös szőnyeg dobozok melletti X jelekhez. Itt a csomagolási dátum hiányzó részeit fogjuk pótolni a dobozokon a datetime() használatával. A szerkesztőben előre megírt dátum van hozzárendelve a red_date változóhoz, amelyből különböző adatrekordokat vonunk ki a dobozok címkézéséhez.
A vörös szőnyegek esetében:
-
Az arany X jelnél, fordulj a dobozok felé, és hozz létre egy
red_daysnevű változót, amelyben tárold el a dátumot idő nélkül ared_dateváltozódate()metódusának segítségével, majd alakítsd stringgé astr()segítségével, így:red_days = str(red_date.date()). Használd awrite()függvényt, hogy ared_daysértékével címkézd a dobozokat. -
A világos X jelnél, fordulj a dobozok felé, és hozz létre egy
red_timenevű változót, amelyben tárold el az időt dátum nélkül ared_dateváltozótime()metódusának segítségével, majd alakítsd stringgé astr()segítségével, így:red_time = str(red_date.time()). Használd awrite()függvényt, hogy ared_timeértékével címkézd a dobozokat. -
A sötét X jelnél, fordulj a dobozok felé, és hozz létre egy
red_timestampnevű változót, amelyben tárold el az időbélyeget, amely ared_dateváltozóból származik, így:red_timestamp = red_date.timestamp(). Használd awrite()függvényt, hogy ared_timestampértékével címkézd a dobozokat.
Ezután lépjünk a kék szőnyeg dobozok előtti X jelekhez. Ahogy korábban, itt is három (3) színes X jel sorozata következik, ebben az esetben az előre megírt blue_date változóra hivatkozva a címkék kiegészítéséhez. Menj végig az oszlopon, és használd a strftime() függvényt, hogy hozzáadd a hiányzó elemeket a szállítási címkékhez. Ellentétben az előző függvényekkel, ez a módszer speciális kódot igényel az elemek kinyeréséhez és formázásához a céldátumból. Például, ha a blue_date változóból a hét napját szeretnénk kinyerni, a strftime() függvénnyel a következő kódot használod: "%a", így: blue_date.strftime("%a").
A kék szőnyeg dobozok melletti X jelek esetében használd a strftime() függvényt a szükséges kódokkal. Nézd át az előzőleg felsorolt kódlistát a követelmények alapján. A kék szőnyegek esetében:
-
Az arany X jelnél, fordulj a dobozok felé, és hozz létre egy
blue_weekdaynevű változót, amelyben tárold el a hét napját astrftime()segítségével ablue_dateváltozóból, például így:blue_day = blue_date.strftime("%a"). Hozz létre egy másikblue_daynevű változót, és tárold el benne a hónap napját astrftime()segítségével ablue_dateváltozóból. Hozz létre egyblue_monthnevű változót, és tárold el benne a hónap teljes nevét astrftime()használatával ablue_dateváltozóból. Illeszd be ablue_weekday,blue_dayésblue_monthváltozókat az előre megírtwrite()függvényhívásba. -
A világos X jelnél, fordulj a dobozok felé, és hozz létre egy
blue_hournevű változót, amelyben tárold el az órát, 12 órás ciklusban, astrftime()segítségével ablue_dateváltozóból. Hozz létre egyblue_minutenevű változót, és tárold el benne a percet astrftime()segítségével ablue_dateváltozóból. Hozz létre egyblue_meridiannevű változót, és tárold el benne a déli/idő jelölést, AM/PM értékét astrftime()segítségével ablue_dateváltozóból. Illeszd be ablue_hour,blue_minuteésblue_meridianváltozókat az előre megírtwrite()függvényhívásba. -
A sötét X jelnél, fordulj a dobozok felé, és hozz létre egy
blue_local_datenevű változót, amelyben tárold el a helyi dátumformátumot, astrftime()segítségével ablue_dateváltozóból. Hozz létre egyblue_local_timenevű változót, és tárold el benne a helyi időformátumot, astrftime()segítségével ablue_dateváltozóból. Illeszd be ablue_local_date,blue_local_timeésblue_meridianváltozókat az előre megírtdisplay()függvényhívásba.
Végül áttérünk az arany X jelhez a zöld szőnyeg mellett, majd lefelé lépünk a jobb oldali oszlopban lévő zöld szőnyeg dobozok melletti X jelekhez. Itt folytatjuk a csomagolási dátum hiányzó részeinek hozzáadását a strftime() segítségével. A szerkesztőben előre megírt dátum van hozzárendelve a green_date változóhoz, amelyből különféle adatdarabokat vonunk ki a dobozok címkézéséhez.
A zöld szőnyegek esetében:
-
Az arany X jelnél, fordulj a dobozok felé, és hozz létre egy
green_daynevű változót, amelyben tárold el az év napját astrftime()segítségével agreen_dateváltozóból. Használd awrite()függvényt, hogy agreen_dayértékével címkézd a dobozokat. -
A világos X jelnél, fordulj a dobozok felé, és hozz létre egy
green_weeknevű változót, amelyben tárold el az év hetének számát astrftime()segítségével agreen_dateváltozóból. Használd awrite()függvényt, hogy agreen_weekértékével címkézd a dobozokat. -
A sötét X jelnél, fordulj a dobozok felé, és hozz létre egy
green_timezonenevű változót, amelyben tárold el a UTC időzónát astrftime()segítségével agreen_dateváltozóból. Használd awrite()függvényt, hogy agreen_timezoneértékével címkézd a dobozokat.
Miután minden címkét lejegyeztünk az X jelek mellett a színes szőnyegek mentén, a szint elkészül.