Avansert Pythonutviklingskurs
Kapittel
>
Nivå
Streng- og tidsmoduler
Dato/Tid Modul
Mål
Juster poster og sett opp fraktdatoer for forsyninger ved hjelp av modulfunksjoner for dato og tid.
Det nedre gulvet i annexet til det nye byggeområdet er et lager som inneholder noen av de nylig leverte forsyningene som har blitt pakket og er klare til å sendes til områdene rundt den nye konstruksjonen. De må merkes med sine korrekte datoer og klokkeslett, og det må sikres at eventuelle etiketter som allerede er påført inneholder all relevant informasjon. For å gjøre dette kunne vi tatt oss tid til manuelt å skrive og formatere datoer og tid, men det finnes en mye raskere måte å gjøre dette på ved hjelp av modulen for dato og tid.
Modulen for dato og tid importeres ved å skrive import datetime, noe som låser opp en rekke kraftige funksjoner som lar deg lese og sette formaterte tider og datoer som du kan lagre i objekter. Du kan også bruke: from datetime import timezone, timedelta for å angi tidssoner. Følgende funksjoner blir tilgjengelige ved å importere modulen:
datetime.datetime(): Lar deg sette og lagre et tidspunkt etter eget valg, tar flere argumenter som følger:year,month,day,hour,minute,second,microsecond,timezone. Du trenger ikke å angi alle argumentene, bare de du ønsker å bruke.datetime.datetime.now(): Returnerer din nåværende dato og tid slik den ville vises på en klokke.datetime.datetime.date(): Returnerer kun datoen fra datetime, uten tid.datetime.datetime.time(): Returnerer kun tiden fra datetime, uten dato.datetime.datetime.timestamp(): Returnerer datetime sin tidsstempel som en UNIX-kode.timezone(): Lar deg sette en tidssone for bruk med dine dato- og tidsargumenter.datetime.strftime(): Lar deg hente ut spesifikk informasjon om dato og tid og formatere den slik du ønsker ved hjelp av spesifikke koder. For våre formål vil vi bruke følgende koder:"%a": Ukedag, forkortet"%d": Dagen i måneden"%B": Månedens navn, skrevet med stor bokstav"%I": Time, tolv-timers syklus"%M": Minutt"%p": Formiddag/ettermiddag, AM/PM"%x": Lokal datoformat"%X": Lokal tidsformat"%j": Dagen i året"%U": Uken i året"%z": UTC tidssone
For å starte, gå mot det lyse X-merket og vend deg mot disken, bruk funksjonen read() for å sjekke pakkedatoene for forsendelsene samt start- og sluttdatoer for prosjektene. Noter de start- og sluttdatoene som er oppgitt i dokumentet (måned/dag/år). De tre (3) første datapunktene skrevet i notatet samt tidssonen er forhåndsskrevet i kodeeditoren for å gjøre det enklere å bruke i senere funksjoner.
På dette samme området, opprett en variabel kalt today og lagre returverdien av datetime.datetime.now(). Bruk str() for å konvertere verdien til en streng slik at den er i et lesbart format, slik: today = str(datetime.datetime.now()). Bruk funksjonen display() for å skrive ned dagens dato i notatet, med dette blir datoen for fraktallokeringene satt og du kan begynne å legge til manglende datapunkter på de nødvendige områdene.
Gå til det gylne X-merket ved siden av disken, og her skal vi beregne og skrive ned antall dager dette prosjektet vil ta. Det er to variabler skrevet i editoren kalt start og end som lagrer datetime. Skriv ned start- og sluttdatoene du tidligere leste inn i de angitte feltene. Opprett en variabel kalt result og lagre resultatet av en subtraksjon mellom variablene end og start. Bruk funksjonen str() for å konvertere verdien til et lesbart strengformat, slik: result = str(end-start). Bruk funksjonen write() for å skrive ned variabelen result, for å markere hvor lang tid dette vil ta.
Herfra skal vi bevege oss til det gylne X-merket ved siden av den røde løperen og deretter ned til X-merkene ved siden av de røde løperkassene i venstre kolonne. Her vil vi legge til spesifikke deler av pakkedatoene som mangler på kassene ved hjelp av datetime(). I editoren vil det være en forhåndsskrevet dato tilordnet variabelen red_date, vi skal hente ut ulike biter med data og bruke det til å merke kassene.
For de røde løperne:
-
På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt
red_daysog lagre i den datoen uten tid ved å brukedate()fra variabelenred_date, og konverter den medstr(), slik:red_days = str(red_date.date()). Bruk funksjonenwrite()for å merke kassene medred_days. -
På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt
red_timeog lagre i den tiden uten dato ved å bruketime()fra variabelenred_dateog konverter den medstr(), slik:red_time = str(red_date.time()). Bruk funksjonenwrite()for å merke kassene medred_time. -
På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt
red_timestampog lagre i den tidsstempelet beregnet fra variabelenred_date, slik:red_timestamp = red_date.timestamp(). Bruk funksjonenwrite()for å merke kassene medred_timestamp.
Fortsett deretter med å gå til X-merkene foran de blå løperkassene. Som før er det en serie på tre (3) fargede X-merker, i dette tilfellet med referanse til den forhåndsskrevne variabelen blue_date for å fullføre etikettene. Gå gjennom kolonnen og bruk funksjonen strftime() for å legge til manglende elementer på fraktetikettene. I motsetning til de forrige funksjonene krever denne en spesifikk kode for å hente ut og formatere elementer fra mål-datoen. For eksempel, hvis vi ønsker å få ukedagen for variabelen blue_date vil du bruke koden "%a" med funksjonen strftime() slik: blue_date.strftime("%a").
For X-merkene ved siden av de blå løperkassene, bruk funksjonen strftime() med den spesifikke koden som kreves. Se gjennom den tidligere oppgitte listen med koder avhengig av kravene. For de blå løperne:
-
På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt
blue_weekdayog lagre i den ukedagen ved hjelp avstrftime()fra variabelenblue_dateslik:blue_day = blue_date.strftime("%a"). Opprett en annen variabel kaltblue_dayog lagre i den dagen i måneden ved hjelp avstrftime()fra variabelenblue_date. Opprett en annen variabel kaltblue_monthog lagre i den månedens navn, skrevet med stor bokstav, ved hjelp avstrftime()fra variabelenblue_date. Sett inn variableneblue_weekday,blue_dayogblue_monthi den forhåndsskrevne funksjonenwrite(). -
På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt
blue_hourog lagre i den timen, tolv-timers syklus, ved hjelp avstrftime()fra variabelenblue_date. Opprett en annen variabel kaltblue_minuteog lagre i den minuttet ved hjelp avstrftime()fra variabelenblue_date. Opprett en annen variabel kaltblue_meridianog lagre i den meridianen, AM/PM, ved hjelp avstrftime()fra variabelenblue_date. Sett inn variableneblue_hour,blue_minuteogblue_meridiani den forhåndsskrevne funksjonenwrite(). -
På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt
blue_local_dateog lagre i den lokalt datoformat, ved hjelp avstrftime()fra variabelenblue_date. Opprett en annen variabel kaltblue_local_timeog lagre i den lokalt tidsformat ved hjelp avstrftime()fra variabelenblue_date. Sett inn variableneblue_local_date,blue_local_timeogblue_meridiani den forhåndsskrevne funksjonendisplay().
Til slutt skal vi gå til det gylne X-merket ved siden av den grønne løperen, og deretter ned til X-merkene ved siden av de grønne løperkassene i høyre kolonne. Her vil vi fortsette med å legge til spesifikke deler av pakkedatoene som mangler på kassene ved hjelp av strftime(). I editoren vil det være en forhåndsskrevet dato tilordnet variabelen green_date, vi skal hente ut ulike biter med data og bruke det til å merke kassene.
For de grønne løperne:
-
På det gylne X-merket, vend deg mot kassene og opprett en variabel kalt
green_dayog lagre i den dagen i året ved hjelp avstrftime()fra variabelengreen_date. Bruk funksjonenwrite()for å merke kassene medgreen_day. -
På det lyse X-merket, vend deg mot kassene og opprett en variabel kalt
green_weekog lagre i den uken i året ved hjelp avstrftime()fra variabelengreen_date. Bruk funksjonenwrite()for å merke kassene medgreen_week. -
På det mørke X-merket, vend deg mot kassene og opprett en variabel kalt
green_timezoneog lagre i den UTC tidssone ved hjelp avstrftime()fra variabelengreen_date. Bruk funksjonenwrite()for å merke kassene medgreen_timezone.
Når alle etiketter på X-merker ved siden av de fargede løperne er skrevet ned, vil nivået være fullført.