Opret en HTML-kalender i Python dynamisk

click fraud protection

Pythons kalender modul er en del af standardbiblioteket. Det tillader output af en kalender efter måned eller år og giver også anden kalenderrelateret funktionalitet.

Det kalender Selve modulet afhænger af datetime-modulet. Men vi har også brug for det dato tid til vores egne formål senere, så det er bedst at importere begge disse. For at gøre noget strengopdeling skal vi også bruge re modul. Lad os importere dem alle på én gang.

Som standard begynder kalenderne ugen med mandag (dag 0) pr. Europæisk konvention og slutter med søndag (dag 6). Hvis du foretrækker søndag som den første ugedag, skal du bruge setfirstweekday () metode til at ændre standard til dag 6 som følger:

For at skifte mellem de to kan du passere den første dag i ugen som et argument ved hjælp af sys modul. Derefter kontrolleres værdien med en hvis erklæring og indstil setfirstweekday () metode i overensstemmelse hermed.

I vores kalender ville det være rart at have en overskrift til kalenderen, der læser noget som "En Python-genereret kalender til ..." og har den aktuelle måned og år. For at gøre dette skal vi hente måned og år fra systemet. Denne funktionalitet er noget der

instagram viewer
kalender giver, kan Python hente måned og år. Men vi har stadig et problem. Da alle systemdatoer er numeriske og ikke indeholder uafbudte eller ikke-numeriske former for månederne, har vi brug for en liste over disse måneder. Gå ind på listen år.

Når vi får nummeret på en måned, kan vi få adgang til dette nummer (minus en) på listen og få det fulde månedsnavn.

Mærkeligt, at dato tid modul har en dato tid klasse. Det er fra denne klasse, vi kalder to objekter: nu() og dato(). Metoden datetime.datetime.now () returnerer et objekt, der indeholder følgende oplysninger: år, måned, dato, time, minut, sekund og mikrosekunder. Vi har naturligvis ikke behov for tidsoplysninger. For at udelade datoinformationen videregiver vi resultaterne af nu() til datetime.datetime.date () som et argument. Resultatet er det i dag indeholder nu året, måneden og datoen adskilt med em-streger.

For at opdele denne smule data i mere håndterbare stykker, må vi dele dem. Vi kan derefter tildele delene til variablerne current_yr, indeværende måned, og current_day henholdsvis.

For at forstå den første linje i denne kode skal du arbejde fra højre til venstre og indefra og udad. Først strengificerer vi objektet i dag for at fungere på den som en streng. Derefter splittede vi det ved hjælp af em-dash som en afgrænser eller token. Endelig tildeler vi disse tre værdier som en liste til 'nuværende'.

For at håndtere disse værdier mere tydeligt og kalde det lange navn på den aktuelle måned ud af år, tildeler vi månedens nummer til current_no. Vi kan derefter lave en smule subtraktion i underskriften til år og tildele månedsnavnet til indeværende måned.

I den næste linje er der brug for en smule substitution. Datoen, der returneres fra dato tid er en tocifret værdi selv for de første ni dage i måneden. Et nul fungerer som en pladsholder, men vi vil hellere have, at vores kalender kun har det eneste ciffer. Så vi erstatter ingen værdi for hver nul, der starter en streng (deraf '\ A'). Endelig tildeler vi året til current_yr, konvertering til et heltal undervejs.

Metoder, som vi vil kalde senere, kræver input i heltalformat. Derfor er det vigtigt at sikre, at alle datadata gemmes i heltal, ikke strengform.

Før vi udskriver kalenderen, skal vi udskriveHTML indledning og CSS-layout til vores kalender. Gå til denne side for koden til udskrivning af CSS- og HTML-indledningen til kalenderen. og kopier koden til din programfil. CSS i HTML-filen til denne fil følger den skabelon, der tilbydes af Jennifer Kyrnin, About's Guide to Web Design. Hvis du ikke forstår denne del af koden, kan du konsultere hendes hjælp til at lære CSS og HTML. Endelig, for at tilpasse månedsnavnet, har vi brug for følgende linje:

Nu hvor det grundlæggende layout er output, kan vi konfigurere selve kalenderen. En kalender på det mest basale punkt er en tabel. Så lad os lave en tabel i vores HTML:

Nu skal vi oprette den aktuelle kalender. For at få de faktiske kalenderdata, har vi brug for kalender modulets MonthCalendar () metode. Denne metode tager to argumenter: året og måneden for den ønskede kalender (begge i heltalform). Det returnerer en liste, der indeholder lister over datoerne for den månedlige uge. Så hvis vi tæller antallet af varer i den returnerede værdi, har vi antallet af uger i den givne måned.

Når vi kender antallet af uger i måneden, kan vi oprette en til sløjfe, der tæller gennem en rækkevidde() fra 0 til antallet af uger. Som det gør, udskriver det resten af ​​kalenderen.

Efter at dette interval er startet, bortfalder ugens datoer fra måned i henhold til værdien af ​​tælleren og tildelt uge. Derefter oprettes en tabulær række, der holder kalenderdatoerne.

EN til loop går derefter gennem ugens dage, så de kan analyseres. Det kalender modul udskriver et '0' for hver dato i tabellen, der ikke har en gyldig værdi. En tom værdi ville fungere bedre til vores formål, så vi udskriver bookends med tabeloplysninger uden en værdi for disse datoer.

Dernæst, hvis dagen er den aktuelle, bør vi fremhæve den på en eller anden måde. Baseret på TD klasse i dag, CSS på denne side vil medføre, at den aktuelle dato gengives mod en mørk baggrund i stedet for den lyse baggrund af de andre datoer.

Endelig, hvis datoen er en gyldig værdi og ikke er den aktuelle dato, udskrives den som tabeloplysninger. De nøjagtige farvekombinationer til disse findes i CSS-stil-indledningen.

Bare denne enkle kalender kan bruges på enhver måde, der har brug for en kalenderrepræsentation. Ved at hyperlinke datoerne i HTML kan man nemt oprette en dagbogsfunktionalitet. Alternativt kan man kontrollere mod en dagbogsfil og derefter afspejle, hvilke datoer der tages efter deres farve. Eller, hvis man konverterer dette program til et CGI-script, kan man få det genereret undervejs.

instagram story viewer