time — Πρόσβαση και μετατροπές χρόνου¶
Αυτό το module παρέχει διάφορες συναρτήσεις σχετικές με τον χρόνο. Για σχετική λειτουργικότητα, δείτε επίσης τα modules datetime και calendar.
Αν και αυτό το module είναι πάντα διαθέσιμο, δεν είναι όλες οι συναρτήσεις διαθέσιμες σε όλες τις πλατφόρμες. Οι περισσότερες από τις συναρτήσεις που ορίζονται σε αυτό το module καλούν συναρτήσεις της πλατφόρμας C με το ίδιο όνομα. Μπορεί μερικές φορές να είναι χρήσιμο να συμβουλευτείτε την τεκμηρίωση της πλατφόρμας, επειδή η σημασιολογία αυτών των συναρτήσεων διαφέρει μεταξύ των πλατφορμών.
Απαιτείται μια εξήγηση ορισμένης ορολογίας και συμβάσεων.
Το epoch είναι το σημείο όπου ξεκινά ο χρόνος, η τιμή που επιστρέφει το
time.gmtime(0). Είναι η 1η Ιανουαρίου 1970, 00:00:00 (UTC) σε όλες τις πλατφόρμες.
Ο όρος seconds since the epoch αναφέρεται στον συνολικό αριθμό των δευτερολέπτων που έχουν παρέλθει από το epoch, συνήθως εξαιρώντας τα leap seconds. Τα δίσεκτα δευτερόλεπτα (leap seconds) εξαιρούνται από αυτό το σύνολο σε όλες τις πλατφόρμες που συμμορφώνονται με το POSIX.
Οι συναρτήσεις σε αυτό το module μπορεί να μην χειρίζονται ημερομηνίες και ώρες πριν από το epoch ή πολύ μακριά στο μέλλον. Το σημείο κοπής στο μέλλον καθορίζεται από τη βιβλιοθήκη C· για συστήματα 32-bit, είναι τυπικά το 2038.
Η συνάρτηση
strptime()μπορεί να αναλύσει 2-ψήφια έτη όταν δοθεί κωδικός μορφής%y. Όταν αναλύονται 2-ψήφια έτη, μετατρέπονται σύμφωνα με τα πρότυπα POSIX και ISO C: οι τιμές 69–99 αντιστοιχίζονται σε 1969–1999, και οι τιμές 0–68 αντιστοιχίζονται σε2000–2068.
Το UTC είναι το Coordinated Universal Time και έχει αντικαταστήσει το Greenwich Mean Time ή GMT ως τη βάση της διεθνούς τήρησης χρόνου. Το ακρωνύμιο UTC δεν είναι λάθος αλλά συμμορφώνεται με ένα προηγούμενο, ουδέτερο ως προς τη γλώσσα, σχήμα ονομασίας για πρότυπα χρόνου όπως τα UT0, UT1, και UT2.
Το DST είναι το Daylight Saving Time, μια προσαρμογή της ζώνης ώρας κατά (συνήθως) μία ώρα κατά τη διάρκεια μέρους του έτους. Οι κανόνες DST είναι μαγικοί (καθορίζονται από τοπικό νόμο) και μπορεί να αλλάζουν από έτος σε έτος. Η βιβλιοθήκη C έχει έναν πίνακα που περιέχει τους τοπικούς κανόνες (συχνά διαβάζεται από ένα σύστημα αρχείων για ευελιξία) και είναι η μόνη πηγή Αληθινής Σοφίας σε αυτό το θέμα.
Η ακρίβεια των διαφόρων συναρτήσεων πραγματικού χρόνου μπορεί να είναι λιγότερη από αυτή που υποδηλώνεται από τις μονάδες στις οποίες εκφράζεται η τιμή ή το όρισμά τους. Π.χ. στα περισσότερα συστήματα Unix, το ρολόι «χτυπάει» μόνο 50 ή 100 φορές το δευτερόλεπτο.
Από την άλλη πλευρά, η ακρίβεια της
time()και τηςsleep()είναι πιο καλή από τις αντίστοιχες Unix: οι χρόνοι εκφράζονται ως αριθμοί κινητής υποδιαστολής, ηtime()επιστρέφει τον πιο ακριβή διαθέσιμο χρόνο (χρησιμοποιώντας το Unixgettimeofday()όπου είναι διαθέσιμο), καιsleep()θα δεχτεί έναν χρόνο με μη μηδενικό κλάσμα (το Unix :c:select()χρησιμοποιείται για αυτόν τον λόγο, όπου είναι διαθέσιμο).Η τιμή χρόνου όπως επιστρέφεται από τις
gmtime(),localtime(), καιstrptime(), και γίνεται αποδεκτή από τιςasctime(),mktime()καιstrftime(), είναι μια ακολουθία από 9 ακέραιους. Οι τιμές επιστροφής τωνgmtime(),localtime(), καιstrptime()προσφέρουν επίσης ονόματα χαρακτηριστικών για μεμονωμένα πεδία.Δείτε την
struct_timeγια μια περιγραφή αυτών των αντικειμένων.Άλλαξε στην έκδοση 3.3: Ο τύπος
struct_timeεπεκτάθηκε για να παρέχει ταtm_gmtoffκαιtm_zoneχαρακτηριστικά όταν η πλατφόρμα υποστηρίζει τα αντίστοιχα μέληstruct tm.Άλλαξε στην έκδοση 3.6: Τα
struct_timeχαρακτηριστικάtm_gmtoffκαιtm_zoneείναι τώρα διαθέσιμα σε όλες τις πλατφόρμες.Χρησιμοποιήστε τις ακόλουθες συναρτήσεις για να μετατρέψετε μεταξύ αναπαραστάσεων χρόνου:
Από
Προς
Χρήση
δευτερόλεπτα από το epoch
struct_timeσε UTCδευτερόλεπτα από το epoch
struct_timeσε τοπική ώραstruct_timeσε UTCδευτερόλεπτα από το epoch
struct_timeσε τοπική ώραδευτερόλεπτα από το epoch
Συναρτήσεις¶
- time.asctime([t])¶
Μετατρέπει μια πλειάδα ή
struct_timeπου αναπαριστά έναν χρόνο όπως επιστρέφεται από τιςgmtime()ήlocaltime()σε μια συμβολοσειρά της ακόλουθης μορφής:'Sun Jun 20 23:21:05 1993'. Το πεδίο της ημέρας είναι δύο χαρακτήρων και γεμίζεται με κενό αν η ημέρα είναι μονοψήφια, π.χ.:'Wed Jun 9 04:26:40 1993'.Αν το t δεν παρέχεται, χρησιμοποιείται ο τρέχων χρόνος όπως επιστρέφεται από την
localtime(). Οι πληροφορίες τοπικής ρύθμισης δεν χρησιμοποιούνται από τηνasctime().Σημείωση
Σε αντίθεση με τη συνάρτηση C με το ίδιο όνομα, η
asctime()δεν προσθέτει μια νέα γραμμή στο τέλος.
- time.pthread_getcpuclockid(thread_id)¶
Επιστρέφει το clk_id του ρολογιού χρόνου CPU που είναι συγκεκριμένο για το νήμα, για το καθορισμένο thread_id.
Χρησιμοποιήστε το
threading.get_ident()ή τοidentχαρακτηριστικό των αντικειμένωνthreading.Threadγια να λάβετε μια κατάλληλη τιμή για το thread_id.Προειδοποίηση
Η μετάδοση ενός μη έγκυρου ή ληγμένου thread_id μπορεί να έχει ως αποτέλεσμα μη ορισμένη συμπεριφορά, όπως σφάλμα τμηματοποίησης.
Διαθεσιμότητα: Unix
Δείτε τη σελίδα του εγχειριδίου για το pthread_getcpuclockid(3) για περαιτέρω πληροφορίες.
Added in version 3.7.
- time.clock_getres(clk_id)¶
Επιστρέφει την ανάλυση (ακρίβεια) του συγκεκριμένου ρολογιού clk_id. Ανατρέξτε στο Σταθερές αναγνωριστικού ρολογιού για μια λίστα αποδεκτών τιμών για clk_id.
Διαθεσιμότητα: Unix.
Added in version 3.3.
- time.clock_gettime(clk_id) float¶
Επιστρέφει τον χρόνο του συγκεκριμένου ρολογιού clk_id. Ανατρέξτε στο Σταθερές αναγνωριστικού ρολογιού για μια λίστα αποδεκτών τιμών για clk_id.
Χρησιμοποιήστε την
clock_gettime_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Διαθεσιμότητα: Unix.
Added in version 3.3.
- time.clock_gettime_ns(clk_id) int¶
Παρόμοιο με την
clock_gettime()αλλά επιστρέφει τον χρόνο σε νανοδευτερόλεπτα.Διαθεσιμότητα: Unix.
Added in version 3.7.
- time.clock_settime(clk_id, time: float)¶
Ορίζει τον χρόνο του συγκεκριμένου ρολογιού clk_id. Επί του παρόντος, το
CLOCK_REALTIMEείναι η μόνη αποδεκτή τιμή για το clk_id.Χρησιμοποιήστε την
clock_settime_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Διαθεσιμότητα: Unix, not Android, not iOS.
Added in version 3.3.
- time.clock_settime_ns(clk_id, time: int)¶
Παρόμοιο με την
clock_settime()αλλά ορίζει τον χρόνο με νανοδευτερόλεπτα.Διαθεσιμότητα: Unix, not Android, not iOS.
Added in version 3.7.
- time.ctime([secs])¶
Μετατρέπει έναν χρόνο εκφρασμένο σε δευτερόλεπτα από το epoch σε μια συμβολοσειρά της μορφής:
'Sun Jun 20 23:21:05 1993'που αναπαριστά την τοπική ώρα. Το πεδίο της ημέρας είναι δύο χαρακτήρων και γεμίζεται με κενό αν η ημέρα είναι μονοψήφια, π.χ.:'Wed Jun 9 04:26:40 1993'.Αν το secs δεν παρέχεται ή είναι
None, χρησιμοποιείται ο τρέχων χρόνος όπως επιστρέφεται από τηνtime(). Τοctime(secs)είναι ισοδύναμο με τοasctime(localtime(secs)). Οι πληροφορίες τοπικής ρύθμισης δεν χρησιμοποιούνται από τηνctime().
- time.get_clock_info(name)¶
Λάβετε πληροφορίες για το συγκεκριμένο ρολόι ως αντικείμενο χώρου ονομάτων. Τα υποστηριζόμενα ονόματα ρολογιών και οι αντίστοιχες συναρτήσεις για την ανάγνωση της τιμής τους είναι:
'monotonic':time.monotonic()'perf_counter':time.perf_counter()'process_time':time.process_time()'thread_time':time.thread_time()'time':time.time()
Το αποτέλεσμα έχει τα ακόλουθα χαρακτηριστικά:
adjustable:
Trueif the clock can be set to jump forward or backward in time,Falseotherwise. Does not refer to gradual NTP rate adjustments.implementation: Το όνομα της υποκείμενης συνάρτησης C που χρησιμοποιείται για να λάβει την τιμή του ρολογιού. Ανατρέξτε στο Σταθερές αναγνωριστικού ρολογιού για πιθανές τιμές.
monotonic:
Trueαν το ρολόι δεν μπορεί να πάει πίσω, διαφορετικάFalseresolution: Η ανάλυση του ρολογιού σε δευτερόλεπτα (
float)
Added in version 3.3.
- time.gmtime([secs])¶
Μετατρέπει έναν χρόνο εκφρασμένο σε δευτερόλεπτα από το epoch σε μια
struct_timeσε UTC στην οποία η σημαία dst είναι πάντα μηδέν. Αν το secs δεν παρέχεται ή είναιNone, χρησιμοποιείται ο τρέχων χρόνος όπως επιστρέφεται από τηνtime(). Τα κλάσματα του δευτερολέπτου αγνοούνται. Δείτε παραπάνω για μια περιγραφή του αντικειμένουstruct_time. Δείτε τηνcalendar.timegm()για την αντίστροφη αυτής της συνάρτησης.
- time.localtime([secs])¶
Όπως η
gmtime()αλλά μετατρέπει σε τοπική ώρα. Αν το secs δεν παρέχεται ή είναιNone, χρησιμοποιείται ο τρέχων χρόνος όπως επιστρέφεται από τηνtime(). Η σημαία dst ορίζεται σε1όταν το DST ισχύει για τον δεδομένο χρόνο.localtime()μπορεί να κάνει raiseOverflowError, αν η χρονική σφραγίδα είναι εκτός του εύρους τιμών που υποστηρίζονται από τις πλατφόρμες Clocaltime()ήgmtime()συναρτήσεις, καιOSErrorσεlocaltime()ήgmtime()αποτυχία. Είναι κοινό αυτό να περιορίζεται σε έτη μεταξύ 1970 και 2038.
- time.mktime(t)¶
Αυτή είναι η αντίστροφη συνάρτηση της
localtime(). Το όρισμά της είναι ηstruct_timeή πλήρης 9-πλειάδα (καθώς η σημαία dst είναι απαραίτητη· χρησιμοποιήστε-1ως σημαία dst αν είναι άγνωστη) που εκφράζει τον χρόνο σε τοπική ώρα, όχι σε UTC. Επιστρέφει έναν αριθμό κινητής υποδιαστολής, για συμβατότητα με τηνtime(). Αν η τιμή εισόδου δεν μπορεί να αναπαρασταθεί ως έγκυρος χρόνος, είτεOverflowErrorείτεValueErrorθα γίνει raise (που εξαρτάται από το αν η μη έγκυρη τιμή πιαστεί από την Python ή τις υποκείμενες C βιβλιοθήκες). Η πιο πρώιμη ημερομηνία για την οποία μπορεί να δημιουργήσει έναν χρόνο εξαρτάται από την πλατφόρμα.
- time.monotonic() float¶
Επιστρέφει την τιμή (σε κλασματικά δευτερόλεπτα) ενός μονότονου ρολογιού, δηλαδή ενός ρολογιού που δεν μπορεί να πάει πίσω. Το ρολόι δεν επηρεάζεται από ενημερώσεις του συστήματος ρολογιού. Το σημείο αναφοράς της επιστρεφόμενης τιμής είναι απροσδιόριστο, έτσι ώστε μόνο η διαφορά μεταξύ των αποτελεσμάτων δύο κλήσεων να είναι έγκυρη.
Ρολόι:
Στα Windows, καλέστε τα
QueryPerformanceCounter()καιQueryPerformanceFrequency().Στο macOS, καλέστε τα
mach_absolute_time()καιmach_timebase_info().Στο HP-UX, καλέστε το
gethrtime().Καλέστε το
clock_gettime(CLOCK_HIGHRES)αν είναι διαθέσιμο.Αλλιώς, καλέστε το
clock_gettime(CLOCK_MONOTONIC).
Χρησιμοποιήστε την
monotonic_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Added in version 3.3.
Άλλαξε στην έκδοση 3.5: The function is now always available and the clock is now the same for all processes.
Άλλαξε στην έκδοση 3.10: On macOS, the clock is now the same for all processes.
- time.monotonic_ns() int¶
Παρόμοιο με την
monotonic(), αλλά επιστρέφει τον χρόνο σε νανοδευτερόλεπτα.Added in version 3.7.
- time.perf_counter() float¶
Return the value (in fractional seconds) of a performance counter, i.e. a clock with the highest available resolution to measure a short duration. It does include time elapsed during sleep. The clock is the same for all processes. The reference point of the returned value is undefined, so that only the difference between the results of two calls is valid.
Στο CPython, χρησιμοποιεί το ίδιο ρολόι με την
time.monotonic()και είναι ένα μονότονο ρολόι, δηλαδή ένα ρολόι που δεν μπορεί να πάει πίσω.Χρησιμοποιήστε την
perf_counter_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Added in version 3.3.
Άλλαξε στην έκδοση 3.10: On Windows, the clock is now the same for all processes.
Άλλαξε στην έκδοση 3.13: Χρησιμοποιεί το ίδιο ρολόι με την
time.monotonic().
- time.perf_counter_ns() int¶
Παρόμοιο με την
perf_counter(), αλλά επιστρέφει τον χρόνο σεAdded in version 3.7.
- time.process_time() float¶
Επιστρέφει την τιμή (σε κλασματικά δευτερόλεπτα) του αθροίσματος του συστήματος και του χρήστη CPU χρόνου της τρέχουσας διαδικασίας. Δεν περιλαμβάνει τον χρόνο που πέρασε κατά τη διάρκεια του ύπνου. Είναι σε επίπεδο διαδικασίας από τον ορισμό. Το σημείο αναφοράς της επιστρεφόμενης τιμής είναι απροσδιόριστο, έτσι ώστε μόνο η διαφορά μεταξύ των αποτελεσμάτων δύο κλήσεων να είναι έγκυρη.
Χρησιμοποιήστε την
process_time_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Added in version 3.3.
- time.process_time_ns() int¶
Παρόμοιο με την
process_time()αλλά επιστρέφει τον χρόνο σε νανοδευτερόλεπτα.Added in version 3.7.
- time.sleep(secs)¶
Αναστέλλει την εκτέλεση του καλούντος νήματος για τον δεδομένο αριθμό δευτερολέπτων. Το όρισμα μπορεί να είναι ένας αριθμός κινητής υποδιαστολής για να υποδείξει έναν πιο ακριβή χρόνο ύπνου.
Αν ο ύπνος διακοπεί από ένα σήμα και δεν γίνει raise καμία εξαίρεση από τον χειριστή σήματος, ο ύπνος επανεκκινείται με έναν επανυπολογισμένο χρόνο λήξης.
Ο χρόνος αναστολής μπορεί να είναι μεγαλύτερος από τον ζητούμενο κατά αυθαίρετο ποσό, λόγω του προγραμματισμού άλλων δραστηριοτήτων στο σύστημα.
Υλοποίηση Windows
On Windows, if secs is zero, the thread relinquishes the remainder of its time slice to any other thread that is ready to run. If there are no other threads ready to run, the function returns immediately, and the thread continues execution. On Windows 10 and newer the implementation uses a high-resolution timer which provides resolution of 100 nanoseconds. If secs is zero,
Sleep(0)is used.Υλοποίηση Unix
Χρησιμοποιήστε το
clock_nanosleep()αν είναι διαθέσιμο (ανάλυση: 1 nanosecond).Ή χρησιμοποιήστε το
nanosleep()αν είναι διαθέσιμο (ανάλυση: 1 nanosecond);Ή χρησιμοποιήστε το
select()(ανάλυση: 1 microsecond).
Σημείωση
Για να μιμηθείτε μια «no-op», χρησιμοποιήστε το
passαντί γιαtime.sleep(0).Για να παραχωρήσετε εκούσια την CPU, καθορίστε μια πολιτική scheduling policy σε πραγματικό χρόνο και χρησιμοποιήστε την
os.sched_yield()αντί.Κάνει raise ένα auditing event
time.sleepμε όρισμαsecs.Άλλαξε στην έκδοση 3.5: Η συνάρτηση τώρα κοιμάται τουλάχιστον secs ακόμα και αν ο ύπνος διακοπεί από ένα σήμα, εκτός αν ο χειριστής σήματος κάνει raise μια εξαίρεση (δείτε το PEP 475 για την αιτιολόγηση).
Άλλαξε στην έκδοση 3.11: Στο Unix, οι συναρτήσεις
clock_nanosleep()καιnanosleep()τώρα χρησιμοποιούνται αν είναι διαθέσιμες. Στα Windows, τώρα χρησιμοποιείται ένας χρονιστής που μπορεί να αναμένει.Άλλαξε στην έκδοση 3.13: Κάνει raise ένα auditing event.
- time.strftime(format[, t])¶
Μετατρέπει μια πλειάδα ή
struct_timeπου αναπαριστά έναν χρόνο όπως επιστρέφεται από τηνgmtime()ήlocaltime()σε μια συμβολοσειρά όπως καθορίζεται από το όρισμα format. Αν το t δεν παρέχεται, χρησιμοποιείται ο τρέχων χρόνος όπως επιστρέφεται από τηνlocaltime(). Το format πρέπει να είναι μια συμβολοσειρά. ΗValueErrorγίνεται raise αν οποιοδήποτε πεδίο στο t είναι εκτός του επιτρεπτού εύρους.0 είναι ένα νόμιμο όρισμα για οποιαδήποτε θέση στην πλειάδα χρόνου· αν είναι κανονικά παράνομο, η τιμή αναγκάζεται σε μια σωστή.
Οι ακόλουθες οδηγίες μπορούν να ενσωματωθούν στη συμβολοσειρά format. Εμφανίζονται χωρίς την προαιρετική προδιαγραφή πλάτους πεδίου και ακρίβειας, και αντικαθίστανται από τους υποδεικνυόμενους χαρακτήρες στο αποτέλεσμα της
strftime():Οδηγία
Σημασία
Σημειώσεις
%aΤοπικό συντομογραφημένο όνομα ημέρας της εβδομάδας.
%AΤοπικό πλήρες όνομα ημέρας της εβδομάδας.
%bΤοπικό συντομογραφημένο όνομα μήνα.
%BΤοπικό πλήρες όνομα μήνα.
%cΤοπική κατάλληλη αναπαράσταση ημερομηνίας και ώρας.
%dΗμέρα του μήνα ως δεκαδικός αριθμός [01,31].
%f- Μικροδευτερόλεπτα ως δεκαδικός αριθμός
[000000,999999].
(1)
%HΏρα (ρολόι 24 ωρών) ως δεκαδικός αριθμός [00,23].
%IΏρα (ρολόι 12 ωρών) ως δεκαδικός αριθμός [01,12].
%jΗμέρα του έτους ως δεκαδικός αριθμός [001,366].
%mΜήνας ως δεκαδικός αριθμός [01,12].
%MΛεπτό ως δεκαδικός αριθμός [00,59].
%pΤοπικό ισοδύναμο είτε του AM είτε του PM.
(2)
%SΔευτερόλεπτο ως δεκαδικός αριθμός [00,61].
(3)
%UΑριθμός εβδομάδας του έτους (η Κυριακή ως πρώτη ημέρα της εβδομάδας) ως δεκαδικός αριθμός [00,53]. Όλες οι ημέρες σε ένα νέο έτος που προηγούνται της πρώτης Κυριακής θεωρούνται ότι είναι στην εβδομάδα 0.
(4)
%uΗμέρα της εβδομάδας (η Δευτέρα είναι 1· η Κυριακή είναι 7) ως δεκαδικός αριθμός [1, 7].
%wΗμέρα της εβδομάδας ως δεκαδικός αριθμός [0(Κυριακή),6].
%WΑριθμός εβδομάδας του έτους (η Δευτέρα ως πρώτη ημέρα της εβδομάδας) ως δεκαδικός αριθμός [00,53]. Όλες οι ημέρες σε ένα νέο έτος που προηγούνται της πρώτης Δευτέρας θεωρούνται ότι είναι στην εβδομάδα 0.
(4)
%xΤοπική κατάλληλη αναπαράσταση ημερομηνίας.
%XΤοπική κατάλληλη αναπαράσταση ώρας.
%yΈτος χωρίς αιώνα ως δεκαδικός αριθμός [00,99].
%YΈτος με αιώνα ως δεκαδικός αριθμός.
%zΜετατόπιση ζώνης ώρας που υποδεικνύει μια θετική ή αρνητική χρονική διαφορά από το UTC/GMT της μορφής +HHMM ή -HHMM, όπου το H αντιπροσωπεύει δεκαδικά ψηφία ώρας και το M αντιπροσωπεύει δεκαδικά ψηφία λεπτών [-23:59, +23:59]. [1]
%ZΌνομα ζώνης ώρας (κανένας χαρακτήρας αν δεν υπάρχει ζώνη ώρας). Απαρχαιωμένο. [1]
%GISO 8601 έτος (παρόμοιο με το
%Yαλλά ακολουθεί τους κανόνες για το ISO 8601 ημερολογιακό έτος). Το έτος ξεκινά με την εβδομάδα που περιέχει την πρώτη Πέμπτη του ημερολογιακού έτους.%VISO 8601 αριθμός εβδομάδας (ως δεκαδικός αριθμός [01,53]). Η πρώτη εβδομάδα του έτους είναι αυτή που περιέχει την πρώτη Πέμπτη του έτους. Οι εβδομάδες ξεκινούν τη Δευτέρα.
%%Ένας κυριολεκτικός χαρακτήρας
'%'.Σημειώσεις:
Η οδηγία μορφοποίησης
%fεφαρμόζεται μόνο στηνstrptime(), όχι στηνstrftime(). Ωστόσο, δείτε επίσης τηνdatetime.datetime.strptime()και τηνdatetime.datetime.strftime()όπου η οδηγία μορφοποίησης%fεφαρμόζεται στα μικροδευτερόλεπτα.Όταν χρησιμοποιείται με τη συνάρτηση
strptime(), η οδηγία%pεπηρεάζει μόνο το πεδίο ώρας εξόδου αν η οδηγία%Iχρησιμοποιείται για την ανάλυση της ώρας.
Το εύρος είναι πραγματικά από
0έως61· η τιμή60είναι έγκυρη σε χρονικές σφραγίδες που αναπαριστούν leap seconds και η τιμή61υποστηρίζεται για ιστορικούς λόγους.Όταν χρησιμοποιείται με τη συνάρτηση
strptime(), τα%Uκαι%Wχρησιμοποιούνται μόνο σε υπολογισμούς όταν η ημέρα της εβδομάδας και το έτος καθορίζονται.
Here is an example, a format for dates compatible with that specified in the RFC 5322 Internet email standard. [1]
>>> from time import gmtime, strftime >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) 'Thu, 28 Jun 2001 14:17:15 +0000'
Πρόσθετες οδηγίες μπορεί να υποστηρίζονται σε ορισμένες πλατφόρμες, αλλά μόνο αυτές που αναφέρονται εδώ έχουν μια σημασία που τυποποιείται από την ANSI C. Για να δείτε το πλήρες σύνολο κωδικών μορφοποίησης που υποστηρίζονται στην πλατφόρμα σας, συμβουλευτείτε την τεκμηρίωση strftime(3).
Σε ορισμένες πλατφόρμες, μια προαιρετική προδιαγραφή πλάτους πεδίου και ακρίβειας μπορεί να ακολουθεί αμέσως το αρχικό
'%μιας οδηγίας με την εξής σειρά· αυτό επίσης δεν είναι φορητό. Το πλάτος πεδίου είναι κανονικά 2 εκτός από το%jόπου είναι 3.
- time.strptime(string[, format])¶
Ανάλυση μιας συμβολοσειράς που αναπαριστά έναν χρόνο σύμφωνα με μια μορφή. Η επιστρεφόμενη τιμή είναι μια
struct_timeόπως επιστρέφεται από τηνgmtime()ή τηνlocaltime().Η παράμετρος format χρησιμοποιεί τις ίδιες οδηγίες με αυτές που χρησιμοποιούνται από την
strftime(); προεπιλέγεται σε"%a %b %d %H:%M:%S %Y"που ταιριάζει με τη μορφοποίηση που επιστρέφεται από τηνctime(). Αν το string δεν μπορεί να αναλυθεί σύμφωνα με το format, ή αν έχει πλεονάζοντα δεδομένα μετά την ανάλυση, γίνεται raise ηValueError. Οι προεπιλεγμένες τιμές που χρησιμοποιούνται για να συμπληρώσουν τυχόν ελλείποντα δεδομένα όταν δεν μπορούν να εξαχθούν πιο ακριβείς τιμές είναι(1900, 1, 1, 0, 0, 0, 0, 1, -1). Τόσο το string όσο και το format πρέπει να είναι συμβολοσειρές.Για παράδειγμα:
>>> import time >>> time.strptime("30 Nov 00", "%d %b %y") time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
Η υποστήριξη για την οδηγία
%Zβασίζεται στις τιμές που περιέχονται στοtznameκαι στο αν τοdaylightείναι αληθές. Εξαιτίας αυτού, είναι ειδική για την πλατφόρμα εκτός από την αναγνώριση των UTC και GMT που είναι πάντα γνωστά (και θεωρούνται ότι δεν είναι ζώνες ώρας θερινής ώρας).Μόνο οι οδηγίες που καθορίζονται στην τεκμηρίωση υποστηρίζονται. Επειδή η
strftime()υλοποιείται ανά πλατφόρμα, μπορεί μερικές φορές να προσφέρει περισσότερες οδηγίες από αυτές που αναφέρονται. Αλλά ηstrptime()είναι ανεξάρτητη από οποιαδήποτε πλατφόρμα και ως εκ τούτου δεν υποστηρίζει απαραίτητα όλες τις διαθέσιμες οδηγίες που δεν τεκμηριώνονται ως υποστηριζόμενες.
- class time.struct_time¶
Ο τύπος της ακολουθίας τιμών χρόνου που επιστρέφεται από την
gmtime(),localtime(), καιstrptime(). Είναι ένα αντικείμενο με μια named tuple διεπαφή: οι τιμές μπορούν να προσπελαστεί με δείκτη και με όνομα χαρακτηριστικού. Παρουσιάζονται οι ακόλουθες τιμές:Δείκτης
Χαρακτηριστικό
Τιμές
0
- tm_year¶
(για παράδειγμα, 1993)
1
- tm_mon¶
εύρος [1, 12]
2
- tm_mday¶
εύρος [1, 31]
3
- tm_hour¶
εύρος [0, 23]
4
- tm_min¶
εύρος [0, 59]
5
- tm_sec¶
range [0, 61]; see Note (2) in
strftime()6
- tm_wday¶
εύρος [0, 6]; η Δευτέρα είναι 0
7
- tm_yday¶
εύρος [1, 366]
8
- tm_isdst¶
0, 1 ή -1; δείτε παρακάτω
N/A
- tm_zone¶
συντομογραφία ονόματος ζώνης ώρας
N/A
- tm_gmtoff¶
μετατόπιση ανατολικά του UTC σε δευτερόλεπτα
Σημειώστε ότι σε αντίθεση με τη δομή C, η τιμή του μήνα είναι σε εύρος [1, 12], όχι [0, 11].
Σε κλήσεις στην
mktime(), τοtm_isdstμπορεί να οριστεί σε 1 όταν ισχύει η θερινή ώρα, και σε 0 όταν δεν ισχύει. Μια τιμή -1 υποδεικνύει ότι αυτό δεν είναι γνωστό, και συνήθως θα έχει ως αποτέλεσμα τη συμπλήρωση της σωστής κατάστασης.Όταν μια πλειάδα με λανθασμένο μήκος περνά σε μια συνάρτηση που αναμένει μια
struct_time, ή έχει στοιχεία λάθος τύπου, γίνεται raise μιαTypeError.
- time.time() float¶
Επιστρέφει τον χρόνο σε δευτερόλεπτα από την epoch ως αριθμό κινητής υποδιαστολής. Η διαχείριση των leap seconds εξαρτάται από την πλατφόρμα. Στα Windows και στα περισσότερα συστήματα Unix, τα leap seconds δεν υπολογίζονται στον χρόνο σε δευτερόλεπτα από την epoch. Αυτό αναφέρεται συνήθως ως Unix time.
Σημειώστε ότι παρόλο που ο χρόνος επιστρέφεται πάντα ως αριθμός κινητής υποδιαστολής, όχι όλα τα συστήματα παρέχουν χρόνο με καλύτερη ακρίβεια από 1 δευτερόλεπτο. Ενώ αυτή η συνάρτηση κανονικά επιστρέφει μη φθίνουσες τιμές, μπορεί να επιστρέψει μια χαμηλότερη τιμή από μια προηγούμενη κλήση αν το ρολόι του συστήματος έχει οριστεί πίσω μεταξύ των δύο κλήσεων.
Ο αριθμός που επιστρέφεται από την
time()μπορεί να μετατραπεί σε μια πιο συνηθισμένη μορφή χρόνου (δηλαδή έτος, μήνας, ημέρα, ώρα, κ.λπ…) σε UTC περνώντας τον στηνgmtime()συνάρτηση ή σε τοπική ώρα περνώντας τον στηνlocaltime()συνάρτηση. Σε και τις δύο περιπτώσεις επιστρέφεται ένα αντικείμενοstruct_time, από το οποίο τα στοιχεία της ημερολογιακής ημερομηνίας μπορούν να προσπελαστούν ως χαρακτηριστικά.Ρολόι:
On Windows, call
GetSystemTimePreciseAsFileTime().Καλέστε την
clock_gettime(CLOCK_REALTIME)αν είναι διαθέσιμη.Διαφορετικά, καλέστε την
gettimeofday().
Χρησιμοποιήστε την
time_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.
Άλλαξε στην έκδοση 3.13: On Windows, calls GetSystemTimePreciseAsFileTime() instead of
GetSystemTimeAsFileTime().
- time.time_ns() int¶
Παρόμοιο με την
time()αλλά επιστρέφει τον χρόνο ως ακέραιο αριθμό νανοδευτερολέπτων από την epoch.Added in version 3.7.
- time.thread_time() float¶
Επιστρέφει την τιμή (σε κλάσματα δευτερολέπτου) του αθροίσματος του συστήματος και του χρόνου CPU χρήστη του τρέχοντος νήματος. Δεν περιλαμβάνει τον χρόνο που πέρασε κατά τη διάρκεια ύπνου. Είναι ειδικό για το νήμα από τον ορισμό του. Το σημείο αναφοράς της επιστρεφόμενης τιμής είναι απροσδιόριστο, έτσι ώστε μόνο η διαφορά μεταξύ των αποτελεσμάτων δύο κλήσεων στο ίδιο νήμα να είναι έγκυρη.
Χρησιμοποιήστε την
thread_time_ns()για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύποfloat.Διαθεσιμότητα: Linux, Unix, Windows.
Συστήματα Unix που υποστηρίζουν το
CLOCK_THREAD_CPUTIME_ID.Added in version 3.7.
- time.thread_time_ns() int¶
Παρόμοιο με την
thread_time()αλλά επιστρέφει τον χρόνο ως νανοδευτερόλεπτα.Added in version 3.7.
- time.tzset()¶
Επαναφέρει τους κανόνες μετατροπής χρόνου που χρησιμοποιούνται από τις βιβλιοθήκες ρουτίνες. Η μεταβλητή περιβάλλοντος
TZκαθορίζει πώς γίνεται αυτό. Θα ορίσει επίσης τις μεταβλητέςtzname(από τη μεταβλητή περιβάλλοντοςTZ),timezone(μη DST δευτερόλεπτα Δύση του UTC),altzone(DST δευτερόλεπτα δυτικά του UTC) καιdaylight(σε 0 αν αυτή η ζώνη ώρας δεν έχει κανόνες θερινής ώρας, ή σε μη μηδενικό αν υπάρχει μια ώρα, παρελθούσα, παρούσα ή μελλοντική όταν ισχύει η θερινή ώρα).Διαθεσιμότητα: Unix.
Σημείωση
Αν και σε πολλές περιπτώσεις, η αλλαγή της μεταβλητής περιβάλλοντος
TZμπορεί να επηρεάσει την έξοδο συναρτήσεων όπως ηlocaltime()χωρίς να καλέσει τηνtzset(), αυτή η συμπεριφορά δεν πρέπει να βασίζεται.Η μεταβλητή περιβάλλοντος
TZδεν πρέπει να περιέχει κενά.Η τυπική μορφή της μεταβλητής περιβάλλοντος
TZείναι (προστέθηκε κενό για σαφήνεια):std offset [dst [offset [,start[/time], end[/time]]]]
Όπου τα συστατικά είναι:
stdκαιdstΤρεις ή περισσότερες αλφαριθμητικές που δίνουν τις συντομογραφίες ζώνης ώρας. Αυτές θα προωθηθούν στο time.tzname
offsetΗ μετατόπιση έχει τη μορφή:
± hh[:mm[:ss]]. Αυτό υποδεικνύει την τιμή που προστίθεται στην τοπική ώρα για να φτάσει στο UTC. Εάν προηγείται από “-”, η ζώνη ώρας είναι ανατολικά του Πρώτου Μεσημβρινού· διαφορετικά, είναι δυτικά. Αν δεν ακολουθεί μετατόπιση μετά το dst, η θερινή ώρα θεωρείται ότι είναι μία ώρα μπροστά από την κανονική ώρα.start[/time], end[/time]Υποδεικνύει πότε να αλλάξει σε και από το DST. Η μορφή των ημερομηνιών έναρξης και λήξης είναι μία από τις ακόλουθες:
JnΗ Ιουλιανή ημέρα n (1 <= n <= 365). Οι δίσεκτες ημέρες δεν μετριούνται, οπότε σε όλα τα έτη η 28η Φεβρουαρίου είναι η ημέρα 59 και η 1η Μαρτίου είναι η ημέρα 60.
nΗ Ιουλιανή ημέρα με βάση το μηδέν (0 <= n <= 365). Οι δίσεκτες ημέρες μετριούνται, και είναι δυνατόν να αναφερθεί η 29η Φεβρουαρίου.
Mm.n.dΗ d’η ημέρα (0 <= d <= 6) της εβδομάδας n του μήνα m του έτους (1 <= n <= 5, 1 <= m <= 12, όπου η εβδομάδα 5 σημαίνει «η τελευταία d ημέρα στο μήνα m» που μπορεί να συμβεί είτε στην τέταρτη είτε στην πέμπτη εβδομάδα). Η εβδομάδα 1 είναι η πρώτη εβδομάδα στην οποία συμβαίνει η d’η ημέρα. Η ημέρα μηδέν είναι η Κυριακή.
Το
timeέχει την ίδια μορφή με τηνoffsetεκτός από το ότι δεν επιτρέπεται προθετικός χαρακτήρας (“-” ή “+”). Η προεπιλογή, αν δεν δοθεί χρόνος, είναι 02:00:00.
>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') '02:07:36 05/08/03 EDT' >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') '16:08:12 05/08/03 AEST'
Σε πολλά συστήματα Unix (συμπεριλαμβανομένων των *BSD, Linux, Solaris, και Darwin), είναι πιο βολικό να χρησιμοποιήσετε τη βάση δεδομένων zoneinfo (tzfile(5)) του συστήματος για να καθορίσετε τους κανόνες ζώνης ώρας. Για να το κάνετε αυτό, ορίστε τη μεταβλητή περιβάλλοντος
TZστη διαδρομή του απαιτούμενου αρχείου δεδομένων ζώνης ώρας, σε σχέση με τη ρίζα της βάσης δεδομένων ζώνης ώρας “zoneinfo” του συστήματος, που συνήθως βρίσκεται στο/usr/share/zoneinfo. Για παράδειγμα,'US/Eastern','Australia/Melbourne','Egypt'ή'Europe/Amsterdam'.>>> os.environ['TZ'] = 'US/Eastern' >>> time.tzset() >>> time.tzname ('EST', 'EDT') >>> os.environ['TZ'] = 'Egypt' >>> time.tzset() >>> time.tzname ('EET', 'EEST')
Σταθερές αναγνωριστικού ρολογιού¶
Αυτές οι σταθερές χρησιμοποιούνται ως παράμετροι για την clock_getres() και την clock_gettime().
- time.CLOCK_BOOTTIME¶
Ταυτόσημο με το
CLOCK_MONOTONIC, εκτός από το ότι περιλαμβάνει επίσης οποιονδήποτε χρόνο που το σύστημα είναι σε αναστολή.Αυτό επιτρέπει στις εφαρμογές να λαμβάνουν ένα ρολόι μονότονο με επίγνωση αναστολής χωρίς να χρειάζεται να αντιμετωπίσουν τις επιπλοκές του
CLOCK_REALTIME, το οποίο μπορεί να έχει ασυνέχειες εάν ο χρόνος αλλάξει χρησιμοποιώντας τηνsettimeofday()ή παρόμοια.Διαθεσιμότητα: Linux >= 2.6.39.
Added in version 3.7.
- time.CLOCK_HIGHRES¶
Το λειτουργικό σύστημα Solaris διαθέτει ένα χρονόμετρο
CLOCK_HIGHRESπου προσπαθεί να χρησιμοποιήσει μια βέλτιστη πηγή υλικού και μπορεί να δώσει σχεδόν ανάλυση νανοδευτερολέπτων. ΤοCLOCK_HIGHRESείναι το μη ρυθμιζόμενο, ρολόι υψηλής ανάλυσης.Διαθεσιμότητα: Solaris.
Added in version 3.3.
- time.CLOCK_MONOTONIC¶
Ρολόι που δεν μπορεί να ρυθμιστεί και αντιπροσωπεύει τον μονότονο χρόνο από ένα απροσδιόριστο σημείο εκκίνησης.
Διαθεσιμότητα: Unix.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW¶
Παρόμοιο με το
CLOCK_MONOTONIC, αλλά παρέχει πρόσβαση σε έναν ακατέργαστο χρόνο βασισμένο σε υλικό που δεν υπόκειται σε ρυθμίσεις NTP.Διαθεσιμότητα: Linux >= 2.6.28, macOS >= 10.12.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW_APPROX¶
Παρόμοιο με το
CLOCK_MONOTONIC_RAW, αλλά διαβάζει μια τιμή που έχει αποθηκευτεί στην κρυφή μνήμη από το σύστημα κατά την αλλαγή πλαισίου και επομένως έχει λιγότερη ακρίβεια.Διαθεσιμότητα: macOS >= 10.12.
Added in version 3.13.
- time.CLOCK_PROCESS_CPUTIME_ID¶
Υψηλής ανάλυσης χρονομετρητής ανά διεργασία από την CPU.
Διαθεσιμότητα: Unix.
Added in version 3.3.
- time.CLOCK_PROF¶
Υψηλής ανάλυσης χρονομετρητής ανά διεργασία από την CPU.
Διαθεσιμότητα: FreeBSD, NetBSD >= 7, OpenBSD.
Added in version 3.7.
- time.CLOCK_TAI¶
-
Το σύστημα πρέπει να έχει έναν τρέχοντα πίνακα leap second για να δώσει τη σωστή απάντηση. Το λογισμικό PTP ή NTP μπορεί να διατηρήσει έναν πίνακα leap second.
Διαθεσιμότητα: Linux.
Added in version 3.9.
- time.CLOCK_THREAD_CPUTIME_ID¶
Ρολόι χρόνου CPU ειδικό για νήμα.
Διαθεσιμότητα: Unix.
Added in version 3.3.
- time.CLOCK_UPTIME¶
Χρόνος της απόλυτης τιμής του οποίου είναι ο χρόνος που το σύστημα λειτουργεί και δεν έχει ανασταλεί, παρέχοντας ακριβή μέτρηση χρόνου λειτουργίας, τόσο απόλυτη όσο και διαστήματος.
Διαθεσιμότητα: FreeBSD, OpenBSD >= 5.5.
Added in version 3.7.
- time.CLOCK_UPTIME_RAW¶
Ρολόι που αυξάνεται μονότονα, παρακολουθώντας τον χρόνο από ένα αυθαίρετο σημείο, ανεπηρέαστο από ρυθμίσεις συχνότητας ή χρόνου και δεν αυξάνεται ενώ το σύστημα είναι σε κατάσταση ύπνου.
Διαθεσιμότητα: macOS >= 10.12.
Added in version 3.8.
- time.CLOCK_UPTIME_RAW_APPROX¶
Όπως το
CLOCK_UPTIME_RAW, αλλά η τιμή αποθηκεύεται στην κρυφή μνήμη από το σύστημα κατά τις αλλαγές πλαισίου και επομένως έχει λιγότερη ακρίβεια.Διαθεσιμότητα: macOS >= 10.12.
Added in version 3.13.
The following constant is the only parameter that can be sent to
clock_settime().
- time.CLOCK_REALTIME¶
Real-time clock. Setting this clock requires appropriate privileges. The clock is the same for all processes.
Διαθεσιμότητα: Unix.
Added in version 3.3.
Σταθερές ζώνης ώρας¶
- time.altzone¶
Η μετατόπιση της τοπικής ζώνης ώρας DST, σε δευτερόλεπτα δυτικά του UTC, αν είναι ορισμένη. Αυτό είναι αρνητικό αν η τοπική ζώνη ώρας DST είναι ανατολικά του UTC (όπως στη Δυτική Ευρώπη, συμπεριλαμβανομένου του Ηνωμένου Βασιλείου). Χρησιμοποιήστε αυτό μόνο αν το
daylightείναι μη μηδενικό. Δείτε την σημείωση παρακάτω.
- time.daylight¶
Μη μηδενικό αν οριστεί μια ζώνη ώρας DST. Δείτε την σημείωση παρακάτω.
- time.timezone¶
Η μετατόπιση της τοπικής (μη DST) ζώνης ώρας, σε δευτερόλεπτα δυτικά του UTC (αρνητικό στο μεγαλύτερο μέρος της Δυτικής Ευρώπης, θετικό στις ΗΠΑ, μηδέν στο Ηνωμένο Βασίλειο). Δείτε την σημείωση παρακάτω.
- time.tzname¶
Μια πλειάδα από δύο συμβολοσειρές: η πρώτη είναι το όνομα της τοπικής μη DST ζώνης ώρας, η δεύτερη είναι το όνομα της τοπικής ζώνης ώρας DST. Αν δεν οριστεί ζώνη ώρας DST, η δεύτερη συμβολοσειρά δεν πρέπει να χρησιμοποιηθεί. Δείτε την σημείωση παρακάτω.
Σημείωση
Για τις παραπάνω σταθερές ζώνες ώρας (altzone, daylight, timezone, και tzname), η τιμή καθορίζεται από τους κανόνες ζώνης ώρας που ισχύουν κατά το χρόνο φόρτωσης της μονάδας ή την τελευταία φορά που καλείται η tzset() και μπορεί να είναι λανθασμένη για χρόνους στο παρελθόν. Συνιστάται να χρησιμοποιείτε τα tm_gmtoff και tm_zone αποτελέσματα από την localtime() για να λάβετε πληροφορίες ζώνης ώρας.
Δείτε επίσης
- Module
datetime Πιο αντικειμενοστραφής διεπαφή για ημερομηνίες και ώρες.
- Module
locale Υπηρεσίες διεθνοποίησης. Η ρύθμιση τοπικής ρυθμίσεως επηρεάζει την ερμηνεία πολλών προδιαγραφών μορφοποίησης στην
strftime()και τηνstrptime().- Module
calendar Γενικές συναρτήσεις σχετικές με το ημερολόγιο. Η
timegm()είναι η αντίστροφη τηςgmtime()από αυτή τη μονάδα.
Υποσημειώσεις