Corso Avanzato di Sviluppo Python
Capitolo
>
Livello
Moduli Stringa e Tempo
Modulo Data/Ora
Obiettivo
Regola i record e imposta le date di spedizione per le forniture utilizzando le funzioni del modulo Date & Time.
Il piano inferiore dell'ala della nuova area di costruzione è un magazzino contenente alcune delle forniture recentemente consegnate che sono state imballate e pronte per essere spedite nelle aree intorno alla nuova costruzione. Devono essere etichettate con le date e gli orari corretti, e bisogna assicurarsi che eventuali etichette già applicate contengano tutte le informazioni rilevanti. Per fare ciò potremmo prenderci il tempo per scrivere e formattare manualmente date e orari, ma c'è un modo molto più rapido per farlo utilizzando il modulo date and time.
Il modulo date and time viene importato scrivendo import datetime, sbloccando una serie di potenti funzioni che ti permettono di leggere e impostare orari e date formattate che puoi memorizzare in oggetti. Puoi anche usare: from datetime import timezone, timedelta per impostare i fusi orari. Le seguenti funzioni vengono sbloccate importando il modulo:
datetime.datetime(): Permette di impostare e memorizzare un orario a tua scelta, accetta diversi argomenti come:year,month,day,hour,minute,second,microsecond,timezone. Non è necessario inserire tutti gli argomenti, ma solo quelli che desideri utilizzare.datetime.datetime.now(): Restituisce la data e l'orario attuali, come apparirebbero su un orologio.datetime.datetime.date(): Restituisce solo la data del datetime, senza l'orario.datetime.datetime.time(): Restituisce solo l'orario del datetime, senza la data.datetime.datetime.timestamp(): Restituisce il timestamp del datetime come codice UNIX.timezone(): Permette di impostare un fuso orario da utilizzare con gli argomenti di data e orario.datetime.strftime(): Permette di estrarre informazioni specifiche di data e orario e formattarle a piacimento utilizzando codici specifici. Per i nostri scopi utilizzeremo i seguenti codici:"%a": Giorno della settimana, abbreviato"%d": Giorno del mese"%B": Nome del mese, scritto per esteso"%I": Ora, ciclo di dodici ore"%M": Minuto"%p": Meridiano, AM/PM"%x": Formato data locale"%X": Formato orario locale"%j": Giorno dell'anno"%U": Settimana dell'anno"%z": Fuso orario UTC
Per iniziare, cammina verso il segno a croce X chiaro e rivolgi lo sguardo verso la scrivania, usa la funzione read() per controllare le date di imballaggio per le spedizioni, nonché le date di inizio e fine dei progetti. Prendi nota delle date di inizio e fine indicate nel documento (mese/giorno/anno). I primi tre (3) dati scritti nel promemoria, così come il fuso orario, sono pre-scritti nell'editor del codice per facilitare l'uso nelle funzioni successive.
Nello stesso spazio, crea una variabile denominata today e memorizza in essa il valore restituito da datetime.datetime.now(). Usa str() per convertire il valore in una stringa, in modo che sia in un formato leggibile, come segue: today = str(datetime.datetime.now()). Usa la funzione display() per annotare la data di oggi sul promemoria; con ciò, la data per le assegnazioni di spedizione viene impostata e puoi iniziare ad aggiungere i dati mancanti nelle aree necessarie.
Cammina fino al segno a croce X dorato accanto alla scrivania; qui calcoleremo e annoteremo il numero di giorni necessari per completare questo progetto. Nell'editor sono presenti due variabili denominate start e end che memorizzano valori datetime. Annota le date di inizio e fine che hai precedentemente letto negli spazi forniti. Crea una variabile denominata result e memorizza in essa il risultato della sottrazione tra le variabili end e start. Usa la funzione str() per convertire il valore in una stringa leggibile, come segue: result = str(end-start). Usa la funzione write() per annotare la variabile result, in modo da indicare la durata del progetto.
Da qui, ci sposteremo verso il segno a croce X dorato accanto al tappeto rosso e scenderemo fino ai segni a croce X accanto alle casse del tappeto rosso nella colonna di sinistra. Qui aggiungeremo parti specifiche delle date di imballaggio mancanti sulle casse utilizzando datetime(). Nell'editor sarà presente una data pre-scritta assegnata alla variabile red_date; estrarremo vari dettagli e li utilizzeremo per etichettare le casse.
Per i tappeti rossi:
-
Sul segno a croce X dorato, rivolgi lo sguardo verso le casse e crea una variabile denominata
red_daysin cui memorizzare la data senza l'orario, utilizzandodate()dalla variabilered_datee convertendola constr(), in questo modo:red_days = str(red_date.date()). Usa la funzionewrite()per etichettare le casse conred_days. -
Sul segno a croce X chiaro, rivolgi lo sguardo verso le casse e crea una variabile denominata
red_timein cui memorizzare l'orario senza la data, utilizzandotime()dalla variabilered_datee convertendolo constr(), in questo modo:red_time = str(red_date.time()). Usa la funzionewrite()per etichettare le casse conred_time. -
Sul segno a croce X scuro, rivolgi lo sguardo verso le casse e crea una variabile denominata
red_timestampin cui memorizzare il timestamp calcolato dalla variabilered_date, in questo modo:red_timestamp = red_date.timestamp(). Usa la funzionewrite()per etichettare le casse conred_timestamp.
Procedi quindi passando ai segni a croce X davanti alle casse del tappeto blu. Come in precedenza, c'è una serie di tre (3) segni a croce colorati, in questo caso riferiti alla variabile pre-scritta blue_date per completare le etichette. Attraversa la colonna e utilizza la funzione strftime() per aggiungere gli elementi mancanti alle etichette di spedizione. A differenza delle funzioni precedenti, questa richiede un codice specifico per estrarre e formattare gli elementi nella data target. Ad esempio, se vuoi ottenere il giorno della settimana per la variabile blue_date, utilizzerai il codice "%a" insieme alla funzione strftime() in questo modo: blue_date.strftime("%a").
Per i segni a croce X accanto alle casse del tappeto blu, utilizza la funzione strftime() con il codice specifico richiesto. Consulta la lista dei codici precedentemente descritta in base ai requisiti. Per il tappeto blu:
-
Sul segno a croce X dorato, rivolgi lo sguardo verso le casse e crea una variabile denominata
blue_weekdayin cui memorizzare il giorno della settimana utilizzandostrftime()dalla variabileblue_datein questo modo:blue_day = blue_date.strftime("%a"). Crea un'altra variabile denominatablue_daye memorizza in essa il giorno del mese utilizzandostrftime()dalla variabileblue_date. Crea un'altra variabile denominatablue_monthe memorizza in essa il nome del mese, scritto per esteso, utilizzandostrftime()dalla variabileblue_date. Inserisci le variabiliblue_weekday,blue_dayeblue_monthnella funzionewrite()pre-scritta. -
Sul segno a croce X chiaro, rivolgi lo sguardo verso le casse e crea una variabile denominata
blue_hourin cui memorizzare l’ora, ciclo di dodici ore, utilizzandostrftime()dalla variabileblue_date. Crea un'altra variabile denominatablue_minutee memorizza in essa il minuto utilizzandostrftime()dalla variabileblue_date. Crea un'altra variabile denominatablue_meridiane memorizza in essa il meridiano, AM/PM, utilizzandostrftime()dalla variabileblue_date. Inserisci le variabiliblue_hour,blue_minuteeblue_meridiannella funzionewrite()pre-scritta. -
Sul segno a croce X scuro, rivolgi lo sguardo verso le casse e crea una variabile denominata
blue_local_datein cui memorizzare il formato della data locale utilizzandostrftime()dalla variabileblue_date. Crea un'altra variabile denominatablue_local_timee memorizza in essa il formato dell'orario locale utilizzandostrftime()dalla variabileblue_date. Inserisci le variabiliblue_local_date,blue_local_timeeblue_meridiannella funzionedisplay()pre-scritta.
Infine, ci sposteremo verso il segno a croce X dorato accanto al tappeto verde e procederemo verso i segni a croce X accanto alle casse del tappeto verde nella colonna di destra. Qui continueremo ad aggiungere parti specifiche delle date di imballaggio mancanti sulle casse utilizzando strftime(). Nell'editor sarà presente una data pre-scritta assegnata alla variabile green_date; estrarremo vari dettagli e li utilizzeremo per etichettare le casse.
Per i tappeti verdi:
-
Sul segno a croce X dorato, rivolgi lo sguardo verso le casse e crea una variabile denominata
green_dayin cui memorizzare il giorno dell'anno utilizzandostrftime()dalla variabilegreen_date. Usa la funzionewrite()per etichettare le casse congreen_day. -
Sul segno a croce X chiaro, rivolgi lo sguardo verso le casse e crea una variabile denominata
green_weekin cui memorizzare la settimana dell'anno utilizzandostrftime()dalla variabilegreen_date. Usa la funzionewrite()per etichettare le casse congreen_week. -
Sul segno a croce X scuro, rivolgi lo sguardo verso le casse e crea una variabile denominata
green_timezonein cui memorizzare il fuso orario UTC utilizzandostrftime()dalla variabilegreen_date. Usa la funzionewrite()per etichettare le casse congreen_timezone.
Una volta annotate tutte le etichette sui segni a croce X accanto ai tappeti colorati, il livello sarà completato.