Μονάδα χρόνου στην Python 3. Βασικές μέθοδοι, πρότυπα, παραδείγματα

Σχεδόν κάθε πρόγραμμα χρησιμοποιεί χρόνο. Στην Python, έχει αναπτυχθεί μια ξεχωριστή βιβλιοθήκη για αυτό - ώραχρησιμοποιείται για την εκτέλεση ποικίλων ενεργειών με αυτό. Για να λειτουργήσει, πρέπει πρώτα να δηλωθεί στην αρχή του κωδικού. Αυτή η γραμμή χρησιμοποιείται για αυτό:

χρόνος εισαγωγής

Ας εξετάσουμε διάφορες επιλογές για το πώς να χρησιμοποιήσετε σωστά αυτήν την ενότητα στην πράξη. 

Προσδιορισμός του αριθμού των δευτερολέπτων από την εποχή

Για να ολοκληρωθεί αυτή η εργασία, υπάρχει μια λειτουργία ώρα() που δεν παίρνει παραμέτρους. Η τιμή επιστροφής του είναι πόσα δευτερόλεπτα έχουν περάσει από την 1η Ιανουαρίου 1970. Στην Python, αυτή η ώρα ονομάζεται αρχή μιας εποχής. Τουλάχιστον σε λειτουργικά συστήματα της οικογένειας Unix.

Όσο για τα Windows, η ημερομηνία είναι η ίδια, αλλά μπορεί να υπάρχουν προβλήματα με αρνητικές τιμές που ήταν πριν από αυτήν την ημερομηνία. 

Η ζώνη ώρας που χρησιμοποιείται είναι UTC.

χρόνος εισαγωγής

δευτερόλεπτα = χρόνος.χρόνος()

εκτύπωση ("Δευτερόλεπτα από την εποχή =", δευτερόλεπτα)

Η πολυπλοκότητα αυτής της λειτουργίας είναι ότι δεν εμφανίζει ακριβώς την ημερομηνία, αλλά μόνο τον αριθμό των δευτερολέπτων. Για να μετατρέψετε τη μορφή που είναι γνωστή σε όλους, πρέπει να χρησιμοποιήσετε ακριβείς πληροφορίες. Για αυτό, χρησιμοποιείται η συνάρτηση time.ctime().

Επιστρέφοντας την ημερομηνία, την ώρα στη συνηθισμένη μορφή

Για να επιστρέψετε την ώρα στη συνηθισμένη μορφή, υπάρχει μια μέθοδος time.ctime(). Οι αγκύλες υποδεικνύουν μια μεταβλητή ή έναν αριθμό που υποδεικνύει τον αριθμό των δευτερολέπτων που έχουν περάσει από την αρχή της εποχής. Αυτή η μέθοδος επιστρέφει όλα τα χαρακτηριστικά ημερομηνίας και ώρας, συμπεριλαμβανομένων της ημερομηνίας, του έτους, του αριθμού ωρών, των λεπτών, των δευτερολέπτων και της ημέρας της εβδομάδας.

Αυτή η συνάρτηση μπορεί επίσης να χρησιμοποιηθεί χωρίς ορίσματα. Σε αυτήν την περίπτωση, επιστρέφει την τρέχουσα ημερομηνία, ώρα και ούτω καθεξής.

Ακολουθεί ένα απόσπασμα κώδικα που το αποδεικνύει αυτό.

χρόνος εισαγωγής

print(time.ctime())

Τρίτη 23 Οκτωβρίου 10:18:23 2018

Η τελευταία γραμμή είναι αυτό που εκτυπώνεται στην κονσόλα όπου εκτελείται ο διερμηνέας Python. Η μέθοδος μορφοποιεί αυτόματα τον αριθμό των δευτερολέπτων που έλαβε σε μια φόρμα που είναι γνωστή από τον χρήστη. Είναι αλήθεια ότι όλα τα στοιχεία που περιγράφονται παραπάνω χρησιμοποιούνται σπάνια. Κατά κανόνα, πρέπει να λάβετε είτε μόνο την ώρα είτε μόνο τη σημερινή ημερομηνία. Για αυτό, χρησιμοποιείται μια ξεχωριστή συνάρτηση - strftime(). Αλλά πριν το σκεφτούμε, πρέπει να αναλύσουμε την τάξη time.struct_time.

ώρα τάξης.struct_time

Αυτή είναι μια κατηγορία ορισμάτων που μπορούν να γίνουν αποδεκτά με μια σειρά μεθόδων. Δεν έχει επιλογές. Είναι μια πλειάδα με επώνυμη διεπαφή. Με απλά λόγια, τα στοιχεία αυτής της κλάσης είναι προσβάσιμα τόσο με όνομα όσο και με αριθμό ευρετηρίου.

Αποτελείται από τα ακόλουθα χαρακτηριστικά.Μονάδα χρόνου στην Python 3. Βασικές μέθοδοι, πρότυπα, παραδείγματα

Προσοχή! Σε αντίθεση με πολλές άλλες γλώσσες προγραμματισμού, εδώ ο μήνας μπορεί να κυμαίνεται από 1 έως 12 και όχι από μηδέν έως 11.

Επιστροφή συγκεκριμένης μορφής

Χρήση της λειτουργίας strftime() μπορείτε να πάρετε το έτος, μήνα, ημέρα, ώρα, λεπτά, δευτερόλεπτα ξεχωριστά και να τα επιστρέψετε σε μια συμβολοσειρά κειμένου. Στη συνέχεια, μπορεί να εκτυπωθεί στον χρήστη χρησιμοποιώντας τη λειτουργία Τυπώνω () ή με άλλο τρόπο επεξεργασία.

Ως όρισμα, μια συνάρτηση μπορεί να λάβει οποιαδήποτε μεταβλητή που παίρνει μια τιμή που επιστρέφεται από άλλες συναρτήσεις αυτής της ενότητας. Για παράδειγμα, μπορείτε να του μεταφέρετε την τοπική ώρα (θα συζητηθεί αργότερα), από την οποία θα βγάλει τα απαραίτητα δεδομένα.

Εδώ είναι το απόσπασμα κώδικα όπου το κάνουμε.

χρόνος εισαγωγής

named_tuple = time.localtime() # get struct_time

time_string = time.strftime(«%m/%d/%Y, %H:%M:%S», named_tuple)

print (time_string)

Εάν εκτελέσετε αυτόν τον κωδικό, θα εμφανιστεί η τρέχουσα ημερομηνία και ώρα. Η μορφή και η σειρά των στοιχείων μπορούν να αλλάξουν. Είναι οι εξής:

  1. %Y είναι το έτος.
  2. %m είναι ο μήνας.
  3. %d – ημέρα.
  4. %H – χρόνος.
  5. %M – λεπτά.
  6. %S – δευτερόλεπτο.

Αντίστοιχα, μπορείτε να το κάνετε έτσι ώστε η έξοδος να είναι αποκλειστικά του μήνα και της ημέρας. Για να το κάνετε αυτό, απλά δεν χρειάζεται να δώσετε εντολή για εμφάνιση του έτους. Δηλαδή, γράψτε στον παραπάνω τύπο ως όρισμα %m/%d και τέλος. Ή το αντίστροφο, %d/%m. 

Στην πραγματικότητα, ο αριθμός των κυριολεκτικών συμβολοσειρών είναι πολύ μεγαλύτερος. Εδώ είναι ένας πίνακας όπου περιγράφονται αναλυτικά.Μονάδα χρόνου στην Python 3. Βασικές μέθοδοι, πρότυπα, παραδείγματα

Αναβάλετε ένα νήμα για έναν ορισμένο αριθμό δευτερολέπτων

Για αυτό, χρησιμοποιείται η συνάρτηση ύπνος (). Ένα αρκετά μεγάλο μπλοκ εργασιών προγραμματισμού σχετίζεται με το πέρασμα του χρόνου. Μερικές φορές πρέπει να αναβάλλετε το επόμενο βήμα για ένα συγκεκριμένο χρονικό διάστημα. Για παράδειγμα, εάν χρειάζεται να αλληλεπιδράσετε με μια βάση δεδομένων που χρειάζεται συγκεκριμένο χρονικό διάστημα για να επεξεργαστεί.

Ως όρισμα, η μέθοδος χρησιμοποιεί μια τιμή που εκφράζει τον αριθμό των δευτερολέπτων για να καθυστερήσει το επόμενο βήμα από τον αλγόριθμο.

Για παράδειγμα, σε αυτό το απόσπασμα, η καθυστέρηση είναι 10 δευτερόλεπτα.

χρόνος εισαγωγής

παύση = 10

εκτύπωση («Το πρόγραμμα ξεκίνησε…»)

time.sleep (παύση)

print(str(pause) + » πέρασαν δευτερόλεπτα.»)

Ως αποτέλεσμα, θα λάβουμε αυτό:

Το πρόγραμμα ξεκίνησε…

Πέρασαν 10 δευτερόλεπτα.

Όπως μπορούμε να δούμε από την έξοδο, το πρόγραμμα αναφέρει πρώτα ότι έχει ξεκινήσει. Και μετά από δέκα δευτερόλεπτα, έγραψε ότι αυτή η ώρα είχε περάσει.

Η λειτουργία σάς επιτρέπει να καθορίσετε τη διάρκεια της παύσης σε χιλιοστά του δευτερολέπτου. Για να γίνει αυτό, χρησιμοποιούμε κλασματικές τιμές του ορίσματος συνάρτησης ύπνος. Για παράδειγμα, 0,1. Αυτό σημαίνει ότι η καθυστέρηση θα είναι 100 χιλιοστά του δευτερολέπτου.

Λάβετε τοπική ώρα

Χρησιμοποιώντας τη συνάρτηση localtime(), το πρόγραμμα λαμβάνει τον αριθμό των δευτερολέπτων από την έναρξη της εποχής σε μια συγκεκριμένη ζώνη ώρας. 

Ας δώσουμε ένα παράδειγμα κώδικα για σαφήνεια.

χρόνος εισαγωγής

αποτέλεσμα = time.localtime(1575721830)

εκτύπωση ("αποτέλεσμα:", αποτέλεσμα)

print(«nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

Επιστροφή struct_time σε UTC με βάση τον αριθμό των δευτερολέπτων από την εποχή

Αυτή η εργασία επιτυγχάνεται χρησιμοποιώντας το time.gmtime(). μέθοδος. Θα είναι πιο ξεκάθαρο αν δώσουμε ένα παράδειγμα.

χρόνος εισαγωγής

αποτέλεσμα = time.gmtime(1575721830)

εκτύπωση ("αποτέλεσμα:", αποτέλεσμα)

print(«nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

Εάν ενεργοποιήσετε αυτήν τη σειρά ενεργειών, τότε θα εμφανιστεί ένα σύνολο στοιχείων που σχετίζονται με την ώρα, το έτος και τη ζώνη ώρας.

Επιστρέψτε τον αριθμό των δευτερολέπτων από την έναρξη της εποχής με αυτόματη μετατροπή σε τοπική ώρα

Εάν αντιμετωπίζετε μια τέτοια εργασία, αυτή υλοποιείται χρησιμοποιώντας τη μέθοδο mktime(), που παίρνει struct_time. Μετά από αυτό, εκτελεί την αντίστροφη ενέργεια της συνάρτησης Τοπική ώρα(). Δηλαδή, μετατρέπει την ώρα σύμφωνα με την τοπική ζώνη ώρας στον αριθμό των δευτερολέπτων που έχουν περάσει από την αρχή της εποχής, προσαρμοσμένη για τη ζώνη ώρας.

Οι συναρτήσεις mktime() και localtime() είναι στενά αλληλένδετες. Αυτό το απόσπασμα κώδικα το δείχνει ξεκάθαρα. Ας ρίξουμε μια ματιά σε αυτό για να καταλάβουμε πιο βαθιά πώς λειτουργεί. 

χρόνος εισαγωγής

δευτερόλεπτα = 1575721830

# επιστρέφει struct_time

t = time.localtime(δευτερόλεπτα)

print(«t1: «, t)

# επιστρέφει δευτερόλεπτα από το struct_time

s = time.mktime(t)

print(«ns:», δευτερόλεπτα)

Βλέπουμε ότι η μεταβλητή δευτερόλεπτα έχει εκχωρηθεί 1575721830 δευτερόλεπτα από την εποχή. Αρχικά, το πρόγραμμα λαμβάνει την ακριβή ημερομηνία, ώρα και άλλες παραμέτρους, με βάση αυτήν την τιμή, το βάζει σε μια μεταβλητή t, και στη συνέχεια μετατρέπει το περιεχόμενό του σε μεταβλητή s.

Μετά από αυτό χτυπά από μια νέα γραμμή και εμφανίζει τον αριθμό των δευτερολέπτων στην κονσόλα. Μπορείτε να ελέγξετε ότι θα είναι ο ίδιος αριθμός που εκχωρήθηκε στη μεταβλητή δευτερόλεπτα.

Ημερομηνία εξόδου από 9 αριθμούς που αναφέρονται στο struct_time

Ας υποθέσουμε ότι έχουμε 9 αριθμούς που αντιπροσωπεύουν το έτος, τον μήνα, την ημερομηνία, την ημέρα της εβδομάδας και μια σειρά από άλλες τιμές και πρέπει να τους συνδυάσουμε σε μια συμβολοσειρά. Για αυτό, χρησιμοποιείται η συνάρτηση asctime(). Δέχεται ή έτοιμη struct_time, ή οποιαδήποτε άλλη πλειάδα των 9 τιμών που αντιπροσωπεύει το ίδιο. Μετά από αυτό, επιστρέφεται μια συμβολοσειρά, η οποία είναι μια ημερομηνία, ώρα και μια σειρά από άλλες παραμέτρους. 

Είναι πολύ βολικό να χρησιμοποιήσετε αυτήν τη μέθοδο προκειμένου να φέρετε διαφορετικά δεδομένα που καθορίζονται από τον χρήστη σε μια ενιαία μεταβλητή..

Για παράδειγμα, μπορεί να είναι ένα πρόγραμμα όπου ο χρήστης καθορίζει ξεχωριστά την ημέρα, τον μήνα, το έτος, την ημέρα της εβδομάδας και άλλα δεδομένα σχετικά με την εγγραφή σε μια εκδήλωση. Μετά από αυτό, οι πληροφορίες που λαμβάνονται εισάγονται στη βάση δεδομένων και στη συνέχεια εκδίδονται σε άλλο άτομο που τις ζητά.

Λήψη ώρας και ημερομηνίας με βάση τη συμβολοσειρά Python

Ας υποθέσουμε ότι ο χρήστης έχει καθορίσει ανόμοια δεδομένα και πρέπει να τα συνδυάσουμε σε μια γραμμή στη μορφή που εισήγαγε το άτομο και, στη συνέχεια, να δημιουργήσουμε ένα αντίγραφο σε μια άλλη μεταβλητή και να την δημιουργήσουμε ξανά σε μια τυπική μορφή εκεί. Για αυτό, χρησιμοποιείται η συνάρτηση time.strptime().

Παίρνει μια μεταβλητή στην οποία καθορίζεται αυτή η τιμή και επιστρέφει την ήδη γνωστή σε εμάς struct_time.

Για λόγους σαφήνειας, θα γράψουμε ένα τέτοιο πρόγραμμα.

χρόνος εισαγωγής

time_string = «15 Ιουνίου 2019»

result = time.strptime(time_string, «%d %B, %Y»)

εκτύπωση (αποτέλεσμα)

Μαντέψτε ποια θα είναι η έξοδος; Προσπαθήστε να μαντέψετε χωρίς να κοιτάξετε την ουσία. Και μετά ελέγξτε την απάντηση.

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=166, tm_isdst=-1)

Με μια λέξη, η εργασία με ημερομηνίες και ώρες στην Python δεν είναι καθόλου δύσκολη. Αρκεί να ακολουθήσετε αυτές τις οδηγίες και όλα θα πάνε καλά. Χρήση της Βιβλιοθήκης ώρα ο χρήστης έχει έναν τεράστιο αριθμό ευκαιριών για εργασία με το χρόνο, όπως:

  1. Αναστολή εκτέλεσης προγράμματος για καθορισμένο χρονικό διάστημα.
  2. Δείξτε τον χρόνο που πέρασε από την εποχή, σε δευτερόλεπτα. Αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν για τη σύνοψη του χρόνου ή την εκτέλεση άλλων μαθηματικών πράξεων σε αυτόν.
  3. Μετατροπή σε βολική μορφή. Επιπλέον, ο ίδιος ο προγραμματιστής μπορεί να ορίσει ποια στοιχεία θα εμφανίζονται και με ποια σειρά. 

Υπάρχουν επίσης μια σειρά από άλλες δυνατότητες, αλλά σήμερα αναλύσαμε τις πιο βασικές. Θα φανούν χρήσιμα σε σχεδόν οποιοδήποτε πρόγραμμα που κατά κάποιο τρόπο λειτουργεί με το χρόνο. Καλή τύχη.

Αφήστε μια απάντηση