Avanceret Python Udviklingskursus
Kapitel
>
Niveau
Streng- og tidsmoduler
Dato/Tid Modul
Mål
Juster poster og opsæt forsendelsesdatoer for forsyninger ved hjælp af Date & Time modul funktioner.
Den nedre etage af anneksen i det nye byggeområde er et lager, der indeholder nogle af de for nylig leverede forsyninger, som er pakket og klar til forsendelse til områder omkring den nye bygning. De skal mærkes med deres korrekte datoer og tider, og sikres, at eventuelle mærkater, der allerede er påført, indeholder alle relevante oplysninger. For at gøre dette kan vi bruge tid på manuelt at skrive og formatere datoer og tid, men der er en meget hurtigere måde at gøre dette på ved hjælp af date and time modulet.
Date and time modulet importeres ved at skrive import datetime, hvilket låser op for en række kraftfulde funktioner, der giver dig mulighed for at læse og indstille formaterede tider og datoer, som du kan gemme i objekter. Du kan også bruge: from datetime import timezone, timedelta for at sætte tidszoner. Følgende funktioner bliver tilgængelige ved at importere modulet:
datetime.datetime(): Giver dig mulighed for at sætte og gemme et tidspunkt, du vælger, og tager adskillige argumenter som følger:year,month,day,hour,minute,second,microsecond,timezone. Du behøver ikke at indtaste alle argumenter, men kun dem, du ønsker at bruge.datetime.datetime.now(): Returnerer din egen nuværende dato og tid, som den ville vises på et ur.datetime.datetime.date(): Returnerer kun datoen fra datetime, uden tiden.datetime.datetime.time(): Returnerer kun tiden fra datetime, uden datoen.datetime.datetime.timestamp(): Returnerer datetime’s tidsstempel som en UNIX-kode.timezone(): Giver dig mulighed for at indstille en tidszone til brug med dine dato- og tidsargumenter.datetime.strftime(): Giver dig mulighed for at udtrække specifikke informationer om dato og tid og formatere det, som du ønsker, ved hjælp af specifikke koder. Til vores formål vil vi bruge følgende koder:"%a": Ugedag, forkortet"%d": Dagen i måneden"%B": Månedens navn, skrevet med fuld længde"%I": Time, tolv-timers cyklus"%M": Minut"%p": Formiddagen/eftermiddagen, AM/PM"%x": Lokal datoformat"%X": Lokal tidsformat"%j": Dagen i året"%U": Ugen i året"%z": UTC tidszone
For at starte, gå til det lyse X-mærke og vend dig mod pulten, brug read() funktionen til at tjekke pakkedatoerne for forsendelserne samt start- og slutdatoerne for projekterne. Noter de start- og slutdatoer, der er angivet i dokumentet (måned/dag/år). De tre (3) første datapunkter, der er skrevet i notatet, samt tidszonen, er forudskrevet i kodeeditoren for nemheds skyld ved brug i senere funktioner.
I dette samme rum skal du oprette en variabel ved navn today og gemme returværdien af datetime.datetime.now(). Brug str() til at konvertere værdien til en streng, så den er i et læsbart format, som dette: today = str(datetime.datetime.now()). Brug display() funktionen til at notere dagens dato på notatet, hvorefter datoen for forsendelsesallokationerne er sat, og du kan begynde at tilføje manglende datapunkter til de nødvendige områder.
Gå hen til det gyldne X-mærke ved siden af pulten, og her vil vi beregne og notere antallet af dage, dette projekt vil tage. Der er to variabler i editoren, der hedder start og end, som gemmer datetime. Notér de start- og slutdatoer, du tidligere læste, i de angivne felter. Opret en variabel ved navn result og gem resultatet af en subtraktion mellem end og start variablerne. Brug str() funktionen til at konvertere værdien til et læsbart strengformat, som dette: result = str(end-start). Brug write() funktionen til at notere result variablen, for at angive, hvor lang tid dette vil tage.
Herfra bevæger vi os videre til det gyldne X-mærke ved siden af den røde løber og ned til X-mærkerne ved siden af de røde løber-kasser i den venstre kolonne. Her vil vi tilføje specifikke dele af pakkedatoerne, som mangler på kasserne, ved hjælp af datetime(). I editoren vil der være en forudskrevet dato tildelt variablen red_date, som vi vil udtrække diverse datadelte og bruge til at mærke kasserne.
For de røde løbere:
-
Ved det gyldne X-mærke, vend dig mod kasserne og opret en variabel ved navn
red_daysog gem i den datoen uden tiden ved at brugedate()frared_datevariablen, og konverter den medstr(), som dette:red_days = str(red_date.date()). Brugwrite()funktionen til at mærke kasserne medred_days. -
Ved det lyse X-mærke, vend dig mod kasserne og opret en variabel ved navn
red_timeog gem i den tiden uden datoen ved at brugetime()frared_datevariablen og konverter den medstr(), som dette:red_time = str(red_date.time()). Brugwrite()funktionen til at mærke kasserne medred_time. -
Ved det mørke X-mærke, vend dig mod kasserne og opret en variabel ved navn
red_timestampog gem i den tidsstemplet beregnet ud frared_datevariablen, som dette:red_timestamp = red_date.timestamp(). Brugwrite()funktionen til at mærke kasserne medred_timestamp.
Fortsæt herefter med at gå videre til X-mærkerne foran de blå løber-kasser. Som før er der en række på tre (3) farvede X-mærker, i dette tilfælde med reference til den forudskrevne blue_date variabel for at fuldføre mærkaterne. Gå gennem kolonnen og brug strftime() funktionen til at tilføje manglende elementer til forsendelsesmærkaterne. I modsætning til de tidligere funktioner kræver denne en specifik kode til at udtrække og formatere elementer i måldatoen. For eksempel, hvis vi ønsker at få ugedagen for blue_date variablen, vil du bruge koden "%a" med strftime() funktionen, som dette: blue_date.strftime("%a").
For X-mærkerne ved siden af de blå løber-kasser, brug strftime() funktionen med den specifikke kode, der kræves. Gennemgå den tidligere nævnte kodeliste afhængigt af kravene. For de blå løbere:
-
Ved det gyldne X-mærke, vend dig mod kasserne og opret en variabel ved navn
blue_weekdayog gem i den ugedagen ved at brugestrftime()frablue_datevariablen, som dette:blue_day = blue_date.strftime("%a"). Opret en anden variabel ved navnblue_dayog gem i den dag i måneden ved at brugestrftime()frablue_datevariablen. Opret en tredje variabel ved navnblue_monthog gem i den månedens navn, skrevet med fuld længde, ved at brugestrftime()frablue_datevariablen. Indsæt variablerneblue_weekday,blue_dayogblue_monthi den forudskrevnewrite()funktion. -
Ved det lyse X-mærke, vend dig mod kasserne og opret en variabel ved navn
blue_hourog gem i den time, tolv-timers cyklus, ved at brugestrftime()frablue_datevariablen. Opret en anden variabel ved navnblue_minuteog gem i den minut ved at brugestrftime()frablue_datevariablen. Opret en tredje variabel ved navnblue_meridianog gem i den formiddag/eftermiddag, AM/PM, ved at brugestrftime()frablue_datevariablen. Indsæt variablerneblue_hour,blue_minuteogblue_meridiani den forudskrevnewrite()funktion. -
Ved det mørke X-mærke, vend dig mod kasserne og opret en variabel ved navn
blue_local_dateog gem i den lokale datoformat, ved at brugestrftime()frablue_datevariablen. Opret en anden variabel ved navnblue_local_timeog gem i den lokale tidsformat ved at brugestrftime()frablue_datevariablen. Indsæt variablerneblue_local_date,blue_local_timeogblue_meridiani den forudskrevnedisplay()funktion.
Endelig går vi videre til det gyldne X-mærke ved siden af den grønne løber og ned til X-mærkerne ved siden af de grønne løber-kasser i den højre kolonne. Her vil vi fortsætte med at tilføje specifikke dele af pakkedatoerne, der mangler på kasserne, ved hjælp af strftime(). I editoren vil der være en forudskrevet dato tildelt variablen green_date, som vi vil udtrække diverse datadelte fra og bruge til at mærke kasserne.
For de grønne løbere:
-
Ved det gyldne X-mærke, vend dig mod kasserne og opret en variabel ved navn
green_dayog gem i den dag i året ved at brugestrftime()fragreen_datevariablen. Brugwrite()funktionen til at mærke kasserne medgreen_day. -
Ved det lyse X-mærke, vend dig mod kasserne og opret en variabel ved navn
green_weekog gem i den ugen i året ved at brugestrftime()fragreen_datevariablen. Brugwrite()funktionen til at mærke kasserne medgreen_week. -
Ved det mørke X-mærke, vend dig mod kasserne og opret en variabel ved navn
green_timezoneog gem i den UTC tidszone ved at brugestrftime()fragreen_datevariablen. Brugwrite()funktionen til at mærke kasserne medgreen_timezone.
Når alle mærkater på X-mærkerne ved siden af de farvede løbere er noteret, vil niveauet være fuldført.