Edistynyt Python-kehityskurssi
Luku
>
Taso
Merkkijono- ja aikamoduulit
Päiväys- ja aikamoduuli
Tavoite
Säädä tiedot ja määritä toimituspäivät tarvikkeille käyttämällä Date & Time -moduulin funktioita.
Uuden rakennusalueen liitännäistalon alekerroksessa on varasto, joka sisältää osan äskettäin toimitetuista tarvikkeista. Ne on pakattu ja ovat valmiina lähetettäväksi uusille rakennusalueen ympäröiviin alueisiin. Tarvikkeet tulee merkitä oikeilla päivämäärillä ja ajoilla sekä varmistaa, että jo kiinnitetyissä tarroissa on kaikki asiaankuuluvat tiedot. Tätä varten voisimme käyttää aikaa kirjoittamalla ja muotoilemalla päivämääriä ja aikoja manuaalisesti, mutta huomattavasti nopeampi tapa on käyttää date and time -moduulia.
Päiväys- ja aikamoduuli tuodaan kirjoittamalla import datetime. Tämä avaa käytettäväksi joukon tehokkaita funktioita, jotka mahdollistavat muotoiltujen aikojen ja päivämäärien lukemisen ja asettamisen, ja jotka voit tallentaa objekteihin. Voit myös käyttää: from datetime import timezone, timedelta asettaaksesi aikavyöhykkeitä. Seuraavat funktiot avautuvat moduulin tuonnin yhteydessä:
datetime.datetime(): Sallii asettaa ja tallentaa haluamasi ajan. Se ottaa useita argumentteja seuraavasti:year,month,day,hour,minute,second,microsecond,timezone. Kaikkia argumentteja ei tarvitse antaa, vaan vain niitä, joita haluat käyttää.datetime.datetime.now(): Palauttaa nykyisen päivämäärän ja ajan, kuten kello näyttää.datetime.datetime.date(): Palauttaa vain päivämäärän, ei aikaa.datetime.datetime.time(): Palauttaa vain ajan, ei päivämäärää.datetime.datetime.timestamp(): Palauttaa datetime-arvon aikaleiman UNIX-koodina.timezone(): Sallii asettaa aikavyöhykkeen päivämäärä- ja aika-arvojen käyttöä varten.datetime.strftime(): Sallii poimia tiettyjä osia päivämäärästä ja ajasta ja muotoilla ne haluamallasi tavalla käyttäen tiettyjä koodeja. Tarkoituksiimme käytämme seuraavia koodeja:"%a": Viikonpäivä, lyhennettynä"%d": Kuukauden päivä"%B": Kuukauden nimi, kokonaisena"%I": Tunti, kaksitoista tunnin sykli"%M": Minuutti"%p": Meridian, AM/PM"%x": Paikallinen päivämääräformaatti"%X": Paikallinen aikaformaatti"%j": Vuoden päivä"%U": Vuoden viikko"%z": UTC-aikavyöhyke
Aloita kävelemällä valoa edustavan X-merkin luokse ja käänny pöydän puoleen. Käytä read()-funktiota tarkistaaksesi pakkauspäivät toimituksille sekä projektien aloitus- ja lopetuspäivät. Merkitse muistiin dokumentissa annetut aloitus- ja lopetuspäivät (kuukausi/päivä/vuosi). Muistiinpanon kolme (3) ensimmäistä datapistettä sekä aikavyöhyke on valmiiksi kirjoitettu koodieditoriin myöhempää käyttöä varten.
Samassa paikassa luo muuttuja nimeltä today ja tallenna siihen datetime.datetime.now()-funktion palautusarvo. Käytä str()-funktiota muuntaaksesi arvon merkkijonoksi, jotta se on luettavassa muodossa, esimerkiksi näin: today = str(datetime.datetime.now()). Käytä display()-funktiota kirjataksesi tämän päivän päivämäärän muistiin; näin toimitusjakauman päivämäärä asetetaan ja voit alkaa lisätä puuttuvia datapisteitä tarvittaviin osioihin.
Kävele pöydän vieressä olevaan kultaisen X-merkin luokse, ja tässä lasketaan ja kirjataan, kuinka monta päivää tämä projekti kestää. Koodieditorissa on kaksi muuttujaa, nimeltään start ja end, jotka tallentavat datetime-arvoja. Kirjoita aiemmin lukemasi aloitus- ja loppupäivät annettuihin tiloihin. Luo muuttuja nimeltä result ja tallenna siihen end- ja start-muuttujien välinen erotus. Käytä str()-funktiota muuntaaksesi arvon luettavaksi merkkijonoksi, kuten näin: result = str(end-start). Käytä write()-funktiota kirjataksesi result-muuttujan, jolloin merkitään, kuinka kauan projekti kestää.
Siirry seuraavaksi kultaisen X-merkin luokse punaisen maton vieressä ja jatka alaosassa olevien X-merkkien kohdalle punaisen maton laatikoissa vasemmassa sarakkeessa. Tässä lisätään puuttuvia osia pakkauspäivämääristä laatikoihin käyttämällä datetime()-funktiota. Koodieditorissa on valmiiksi määritelty päivämäärä, joka on tallennettu muuttujaan red_date. Poimimme siitä erilaisia tietoja ja käytämme niitä laatikoiden merkintään.
Punaisille matoille:
-
Kultaisen X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
red_days, johon tallennat päivämäärän ilman aikaa käyttämälläred_date-muuttujandate()-metodia ja muuntamalla senstr()-funktiolla, kuten näin:red_days = str(red_date.date()). Käytäwrite()-funktiota merkätäksesi laatikot käyttäenred_days-muuttujaa. -
Kirkkaan X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
red_time, johon tallennat ajan ilman päivämäärää käyttämälläred_date-muuttujantime()-metodia ja muuntamalla senstr()-funktiolla, kuten näin:red_time = str(red_date.time()). Käytäwrite()-funktiota merkätäksesi laatikot käyttäenred_time-muuttujaa. -
Pimeän X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
red_timestamp, johon tallennatred_date-muuttujasta lasketun aikaleiman, kuten näin:red_timestamp = red_date.timestamp(). Käytäwrite()-funktiota merkätäksesi laatikot käyttäenred_timestamp-muuttujaa.
Jatka siirtymällä sinisen maton laatikoiden edessä olevien X-merkkien kohdalle. Aivan kuten aiemmin, tässä on kolme (3) värillistä X-merkkiä, jotka viittaavat valmiiksi määriteltyyn blue_date-muuttujaan etikettien viimeistelyä varten. Käy läpi sarake ja käytä strftime()-funktiota lisätäksesi puuttuvia elementtejä toimitustarroihin. Toisin kuin edelliset funktiot, tämä vaatii tietyn koodin, jolla extraidaan ja muotoillaan kohdepäivämäärän elementtejä. Esimerkiksi, jos haluamme poimia viikonpäivän blue_date-muuttujalle, käytät koodia "%a" yhdessä strftime()-funktion kanssa näin: blue_date.strftime("%a").
Sinisille matoille:
-
Kultaisen X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
blue_weekday, johon tallennat viikonpäivän käyttämällästrftime()-funktiotablue_date-muuttujasta, esimerkiksi näin:blue_day = blue_date.strftime("%a"). Luo toinen muuttuja nimeltäblue_dayja tallenna siihen kuukauden päivä käyttämällästrftime()-funktiotablue_date-muuttujasta. Luo vielä muuttuja nimeltäblue_monthja tallenna siihen kuukauden nimi, kokonaisena, käyttäenstrftime()-funktiotablue_date-muuttujasta. Lisääblue_weekday-,blue_day- jablue_month-muuttujat valmiiksi kirjoitettuunwrite()-funktioon. -
Kirkkaan X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
blue_hour, johon tallennat tunnin, kaksitoista tunnin sykli käyttämällästrftime()-funktiotablue_date-muuttujasta. Luo toinen muuttuja nimeltäblue_minuteja tallenna siihen minuutti käyttäenstrftime()-funktiotablue_date-muuttujasta. Luo vielä muuttuja nimeltäblue_meridianja tallenna siihen Meridian, AM/PM käyttäenstrftime()-funktiotablue_date-muuttujasta. Lisääblue_hour-,blue_minute- jablue_meridian-muuttujat valmiiksi kirjoitettuunwrite()-funktioon. -
Pimeän X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
blue_local_date, johon tallennat paikallisen päivämäärämuodon käyttämällästrftime()-funktiotablue_date-muuttujasta. Luo toinen muuttuja nimeltäblue_local_timeja tallenna siihen paikallinen aikaformaatti käyttäenstrftime()-funktiotablue_date-muuttujasta. Lisääblue_local_date-,blue_local_time- jablue_meridian-muuttujat valmiiksi kirjoitettuundisplay()-funktioon.
Lopuksi siirrymme vihreän maton vieressä olevan kultaisen X-merkin kohdalle ja jatkamme X-merkkien pariin vihreän maton laatikoiden oikeassa sarakkeessa. Tässä jatkamme puuttuvien osien lisäämistä pakkauspäivämääristä laatikoihin käyttämällä strftime()-funktiota. Koodieditorissa on valmiiksi määritelty päivämäärä, joka on tallennettu muuttujaan green_date. Poimimme siitä erilaisia tietoja ja käytämme niitä laatikoiden merkintään.
Vihreille matoille:
-
Kultaisen X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
green_day, johon tallennat vuoden päivän käyttämällästrftime()-funktiotagreen_date-muuttujasta. Käytäwrite()-funktiota merkätäksesi laatikot käyttäengreen_day-muuttujaa. -
Kirkkaan X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
green_week, johon tallennat vuoden viikon käyttäenstrftime()-funktiotagreen_date-muuttujasta. Käytäwrite()-funktiota merkätäksesi laatikot käyttäengreen_week-muuttujaa. -
Pimeän X-merkin kohdalla, käänny laatikoiden puoleen ja luo muuttuja nimeltä
green_timezone, johon tallennat UTC-aikavyöhykkeen käyttämällästrftime()-funktiotagreen_date-muuttujasta. Käytäwrite()-funktiota merkätäksesi laatikot käyttäengreen_timezone-muuttujaa.
Kun kaikki värillisten mattojen vieressä olevat X-merkit on kirjattu, taso on valmis.