Προχωρημένο Μάθημα Ανάπτυξης σε Python
Κεφάλαιο
>
Επίπεδο
Μονάδες Συμβολοσειρών και Χρόνου
Μονάδα Ημερομηνίας/Ώρας
Στόχος
Προσαρμόστε τα αρχεία και ρυθμίστε τις ημερομηνίες αποστολής των προμηθειών χρησιμοποιώντας τις λειτουργίες του module Date & Time.
Το κατώτερο επίπεδο του προσθέματος της νέας κατασκευαστικής περιοχής είναι μια αποθήκη που περιέχει μερικές από τις πρόσφατα παραληφθείσες προμήθειες που έχουν συσκευαστεί και είναι έτοιμες για αποστολή σε περιοχές γύρω από τη νέα κατασκευή. Πρέπει να επιγραφούν με τις σωστές ημερομηνίες και ώρες τους, και να διασφαλιστεί ότι οι ετικέτες που έχουν ήδη εφαρμοστεί περιέχουν όλες τις σχετικές πληροφορίες. Για να γίνει αυτό, θα μπορούσαμε να αφιερώσουμε χρόνο γράφοντας και μορφοποιώντας χειροκίνητα τις ημερομηνίες και τις ώρες, αλλά υπάρχει ένας πολύ ταχύτερος τρόπος, χρησιμοποιώντας το module της ημερομηνίας και ώρας.
Το module της ημερομηνίας και ώρας εισάγεται γράφοντας import datetime, το οποίο ξεκλειδώνει μια σειρά από ισχυρές λειτουργίες που σας επιτρέπουν να διαβάζετε και να ορίζετε μορφοποιημένες ώρες και ημερομηνίες οι οποίες μπορείτε να αποθηκεύσετε σε αντικείμενα. Μπορείτε επίσης να χρησιμοποιήσετε: from datetime import timezone, timedelta προκειμένου να ορίσετε ζώνες ώρας. Οι παρακάτω λειτουργίες ξεκλειδώνονται με την εισαγωγή του module:
datetime.datetime(): Σας επιτρέπει να ορίσετε και να αποθηκεύσετε μια ώρα της επιλογής σας, λαμβάνοντας αρκετά επιχειρήματα ως εξής:year,month,day,hour,minute,second,microsecond,timezone. Δεν χρειάζεται να εισάγετε όλα τα επιχειρήματα, αλλά μόνο αυτά που επιθυμείτε να χρησιμοποιήσετε.datetime.datetime.now(): Επιστρέφει την τρέχουσα ημερομηνία και ώρα όπως θα εμφανιζόταν σε ένα ρολόι.datetime.datetime.date(): Επιστρέφει μόνο την ημερομηνία, χωρίς την ώρα.datetime.datetime.time(): Επιστρέφει μόνο την ώρα, χωρίς την ημερομηνία.datetime.datetime.timestamp(): Επιστρέφει το timestamp της ημερομηνίας ως κώδικα UNIX.timezone(): Σας επιτρέπει να ορίσετε μια ζώνη ώρας για χρήση με τα επιχειρήματα ημερομηνίας και ώρας.datetime.strftime(): Σας επιτρέπει να εξάγετε συγκεκριμένες πληροφορίες ημερομηνίας και ώρας και να τις μορφοποιήσετε όπως επιθυμείτε χρησιμοποιώντας συγκεκριμένους κωδικούς. Για τους σκοπούς μας θα χρησιμοποιήσουμε τους εξής κωδικούς:"%a": Ημέρα της εβδομάδας, συντομευμένη"%d": Ημέρα του μήνα"%B": Όνομα μήνα, γραμμένο πλήρως"%I": Ώρα, σε 12ωρο κύκλο"%M": Λεπτό"%p": Meridian, AM/PM"%x": Τοπική μορφή ημερομηνίας"%X": Τοπική μορφή ώρας"%j": Ημέρα του έτους"%U": Εβδομάδα του έτους"%z": Ζώνη ώρας UTC
Για να ξεκινήσετε, περπατήστε μέχρι το ελαφρύ σημάδι X και στραφτείτε προς το γραφείο, χρησιμοποιήστε τη συνάρτηση read() για να ελέγξετε τις ημερομηνίες συσκευασίας για τις αποστολές καθώς και τις ημερομηνίες έναρξης και λήξης των έργων. Κρατήστε σημειώσεις για τις ημερομηνίες έναρξης και λήξης που παρέχονται στο έγγραφο (μήνας/ημέρα/έτος). Τα τρία (3) πρώτα σημεία δεδομένων που είναι γραμμένα στο σημείωμα καθώς και η ζώνη ώρας έχουν προεγγραφεί στον επεξεργαστή κώδικα για ευκολία χρήσης σε επόμενες λειτουργίες.
Σε αυτόν τον ίδιο χώρο, δημιουργήστε μια μεταβλητή με όνομα today και αποθηκεύστε σε αυτήν την τιμή που επιστρέφει η datetime.datetime.now(). Χρησιμοποιήστε το str() για να μετατρέψετε την τιμή σε συμβολοσειρά ώστε να είναι σε αναγνώσιμη μορφή, όπως: today = str(datetime.datetime.now()). Χρησιμοποιήστε τη συνάρτηση display() για να καταγράψετε την ημερομηνία της ημέρας στο σημείωμα, έτσι ορίζεται η ημερομηνία για τους καταμερισμούς αποστολής και μπορείτε να αρχίσετε να προσθέτετε τα ελλείποντα σημεία δεδομένων στα απαραίτητα πεδία.
Περπατήστε μέχρι το χρυσό σημάδι X δίπλα στο γραφείο και εδώ θα υπολογίσουμε και θα καταγράψουμε τον αριθμό των ημερών που θα διαρκέσει αυτό το έργο. Υπάρχουν δύο μεταβλητές γραμμένες στον επεξεργαστή με ονόματα start και end που αποθηκεύουν datetime. Γράψτε τις ημερομηνίες έναρξης και λήξης που διαβάσατε προηγουμένως στα διαθέσιμα πεδία. Δημιουργήστε μια μεταβλητή με όνομα result και αποθηκεύστε εκεί το αποτέλεσμα της αφαίρεσης μεταξύ των μεταβλητών end και start. Χρησιμοποιήστε τη συνάρτηση str() για να μετατρέψετε την τιμή σε αναγνώσιμη μορφή συμβολοσειράς, όπως: result = str(end-start). Χρησιμοποιήστε τη συνάρτηση write() για να καταγράψετε τη μεταβλητή result, ώστε να σημειωθεί πόσο θα διαρκέσει αυτό το έργο.
Από εδώ θα προχωρήσουμε στο χρυσό σημάδι X δίπλα στο κόκκινο χαλί και θα προχωρήσουμε προς τα κάτω στα σημάδια X δίπλα στα κουτιά του κόκκινου χαλιού στη στήλη στα αριστερά. Εδώ θα προσθέσουμε συγκεκριμένα στοιχεία των ημερομηνιών συσκευασίας που λείπουν από τα κουτιά χρησιμοποιώντας datetime(). Στον επεξεργαστή θα υπάρχει μια προεγγραφείσα ημερομηνία που έχει εκχωρηθεί στη μεταβλητή red_date, από την οποία θα εξάγουμε διάφορα δεδομένα και θα τα χρησιμοποιήσουμε για την επιγραφή των κουτιών.
Για τα κόκκινα χαλιά:
- Στο χρυσό σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
red_daysστην οποία θα αποθηκεύσετε την ημερομηνία χωρίς την ώρα, χρησιμοποιώντας τηdate()από τη μεταβλητήred_dateκαι, μετατρέψτε την σε συμβολοσειρά με τη χρήση τουstr(), όπως:red_days = str(red_date.date()). Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςred_days. - Στο ελαφρύ σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
red_timeστην οποία θα αποθηκεύσετε την ώρα χωρίς την ημερομηνία, χρησιμοποιώντας τηtime()από τη μεταβλητήred_dateκαι μετατρέψτε την με τη χρήση τουstr(), όπως:red_time = str(red_date.time()). Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςred_time. - Στο σκούρο σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
red_timestampστην οποία θα αποθηκεύσετε το timestamp που υπολογίζεται από τη μεταβλητήred_date, όπως:red_timestamp = red_date.timestamp(). Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςred_timestamp.
Συνεχίστε περνώντας στα σημάδια X μπροστά από τα κουτιά του μπλε χαλιού. Όπως και πριν, υπάρχει μια σειρά από τρία (3) έγχρωμα σημάδια X, σε αυτήν την περίπτωση αναφερόμενα στη προ-γραμμένη μεταβλητή blue_date για να ολοκληρωθούν οι ετικέτες. Διατρέξτε τη στήλη και χρησιμοποιήστε τη συνάρτηση strftime() για να προσθέσετε τα ελλείποντα στοιχεία στις ετικέτες αποστολής. Σε αντίθεση με τις προηγούμενες λειτουργίες, αυτή απαιτεί συγκεκριμένο κώδικα για να εξαχθούν και να μορφοποιηθούν τα στοιχεία στην επιλεγμένη ημερομηνία. Για παράδειγμα, εάν θέλουμε να πάρουμε την ημέρα της εβδομάδας για τη μεταβλητή blue_date, θα χρησιμοποιήσετε τον κώδικα "%a" με τη συνάρτηση strftime() ως εξής: blue_date.strftime("%a").
Για τα σημάδια X δίπλα στα κουτιά του μπλε χαλιού, χρησιμοποιήστε τη συνάρτηση strftime() με τον απαιτούμενο συγκεκριμένο κώδικα. Εξετάστε τη λίστα κωδικών που περιγράφηκε προηγουμένως ανάλογα με τις απαιτήσεις. Για τα μπλε χαλιά:
- Στο χρυσό σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
blue_weekdayστην οποία θα αποθηκεύσετε την ημέρα της εβδομάδας χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date, όπως:blue_day = blue_date.strftime("%a"). Δημιουργήστε μια άλλη μεταβλητή με όνομαblue_dayκαι αποθηκεύστε την ημέρα του μήνα χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Δημιουργήστε μια ακόμη μεταβλητή με όνομαblue_monthκαι αποθηκεύστε το όνομα του μήνα, γραμμένο πλήρως, χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Εισάγετε τις μεταβλητέςblue_weekday,blue_dayκαιblue_monthστη προ-γραμμένη συνάρτησηwrite(). - Στο ελαφρύ σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
blue_hourστην οποία θα αποθηκεύσετε την ώρα, σε 12ωρο κύκλο, χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Δημιουργήστε μια άλλη μεταβλητή με όνομαblue_minuteκαι αποθηκεύστε το λεπτό χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Δημιουργήστε μια άλλη μεταβλητή με όνομαblue_meridianκαι αποθηκεύστε το meridian, AM/PM χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Εισάγετε τις μεταβλητέςblue_hour,blue_minuteκαιblue_meridianστη προ-γραμμένη συνάρτησηwrite(). - Στο σκούρο σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
blue_local_dateστην οποία θα αποθηκεύσετε το τοπικό φορμάτ ημερομηνίας, χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Δημιουργήστε μια άλλη μεταβλητή με όνομαblue_local_timeκαι αποθηκεύστε το τοπικό φορμάτ ώρας χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήblue_date. Εισάγετε τις μεταβλητέςblue_local_date,blue_local_timeκαιblue_meridianστη προ-γραμμένη συνάρτησηdisplay().
Τέλος, θα προχωρήσουμε στο χρυσό σημάδι X δίπλα στο πράσινο χαλί και θα προχωρήσουμε προς τα κάτω στα σημάδια X δίπλα στα κουτιά του πράσινου χαλιού στη δεξιά στήλη. Εδώ θα συνεχίσουμε να προσθέτουμε συγκεκριμένα μέρη των ημερομηνιών συσκευασίας που λείπουν από τα κουτιά χρησιμοποιώντας τη συνάρτηση strftime(). Στον επεξεργαστή θα υπάρχει μια προ-γραμμένη ημερομηνία που έχει εκχωρηθεί στη μεταβλητή green_date, από την οποία θα εξάγουμε διάφορα δεδομένα και θα τα χρησιμοποιήσουμε για την επιγραφή των κουτιών.
Για τα πράσινα χαλιά:
- Στο χρυσό σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
green_dayστην οποία θα αποθηκεύσετε την ημέρα του έτους χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήgreen_date. Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςgreen_day. - Στο ελαφρύ σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
green_weekστην οποία θα αποθηκεύσετε την εβδομάδα του έτους χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήgreen_date. Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςgreen_week. - Στο σκούρο σημάδι X, στραφτείτε προς τα κουτιά και δημιουργήστε μια μεταβλητή με όνομα
green_timezoneστην οποία θα αποθηκεύσετε τη ζώνη ώρας UTC χρησιμοποιώντας τη συνάρτησηstrftime()από τη μεταβλητήgreen_date. Χρησιμοποιήστε τη συνάρτησηwrite()για να επισημάνετε τα κουτιά χρησιμοποιώνταςgreen_timezone.
Μόλις όλες οι ετικέτες στα σημάδια X δίπλα στα έγχρωμα χαλιά έχουν καταγραφεί, το επίπεδο θα ολοκληρωθεί.