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() επιστρέφει τον πιο ακριβή διαθέσιμο χρόνο (χρησιμοποιώντας το Unix gettimeofday() όπου είναι διαθέσιμο), και 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

    gmtime()

    δευτερόλεπτα από το epoch

    struct_time σε τοπική ώρα

    localtime()

    struct_time σε UTC

    δευτερόλεπτα από το epoch

    calendar.timegm()

    struct_time σε τοπική ώρα

    δευτερόλεπτα από το epoch

    mktime()

Συναρτήσεις

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.

Added in version 3.3.

time.clock_gettime(clk_id) float

Επιστρέφει τον χρόνο του συγκεκριμένου ρολογιού clk_id. Ανατρέξτε στο Σταθερές αναγνωριστικού ρολογιού για μια λίστα αποδεκτών τιμών για clk_id.

Χρησιμοποιήστε την clock_gettime_ns() για να αποφύγετε την απώλεια ακρίβειας που προκαλείται από τον τύπο float.

Added in version 3.3.

time.clock_gettime_ns(clk_id) int

Παρόμοιο με την clock_gettime() αλλά επιστρέφει τον χρόνο σε νανοδευτερόλεπτα.

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)

Λάβετε πληροφορίες για το συγκεκριμένο ρολόι ως αντικείμενο χώρου ονομάτων. Τα υποστηριζόμενα ονόματα ρολογιών και οι αντίστοιχες συναρτήσεις για την ανάγνωση της τιμής τους είναι:

Το αποτέλεσμα έχει τα ακόλουθα χαρακτηριστικά:

  • adjustable: True if the clock can be set to jump forward or backward in time, False otherwise. Does not refer to gradual NTP rate adjustments.

  • implementation: Το όνομα της υποκείμενης συνάρτησης C που χρησιμοποιείται για να λάβει την τιμή του ρολογιού. Ανατρέξτε στο Σταθερές αναγνωριστικού ρολογιού για πιθανές τιμές.

  • monotonic: True αν το ρολόι δεν μπορεί να πάει πίσω, διαφορετικά False

  • resolution: Η ανάλυση του ρολογιού σε δευτερόλεπτα (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() μπορεί να κάνει raise OverflowError, αν η χρονική σφραγίδα είναι εκτός του εύρους τιμών που υποστηρίζονται από τις πλατφόρμες C localtime() ή 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]

%G

ISO 8601 έτος (παρόμοιο με το %Y αλλά ακολουθεί τους κανόνες για το ISO 8601 ημερολογιακό έτος). Το έτος ξεκινά με την εβδομάδα που περιέχει την πρώτη Πέμπτη του ημερολογιακού έτους.

%V

ISO 8601 αριθμός εβδομάδας (ως δεκαδικός αριθμός [01,53]). Η πρώτη εβδομάδα του έτους είναι αυτή που περιέχει την πρώτη Πέμπτη του έτους. Οι εβδομάδες ξεκινούν τη Δευτέρα.

%%

Ένας κυριολεκτικός χαρακτήρας '%'.

Σημειώσεις:

  1. Η οδηγία μορφοποίησης %f εφαρμόζεται μόνο στην strptime(), όχι στην strftime(). Ωστόσο, δείτε επίσης την datetime.datetime.strptime() και την datetime.datetime.strftime() όπου η οδηγία μορφοποίησης %f εφαρμόζεται στα μικροδευτερόλεπτα.

  2. Όταν χρησιμοποιείται με τη συνάρτηση strptime(), η οδηγία %p επηρεάζει μόνο το πεδίο ώρας εξόδου αν η οδηγία %I χρησιμοποιείται για την ανάλυση της ώρας.

  1. Το εύρος είναι πραγματικά από 0 έως 61· η τιμή 60 είναι έγκυρη σε χρονικές σφραγίδες που αναπαριστούν leap seconds και η τιμή 61 υποστηρίζεται για ιστορικούς λόγους.

  2. Όταν χρησιμοποιείται με τη συνάρτηση 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 αν αυτή η ζώνη ώρας δεν έχει κανόνες θερινής ώρας, ή σε μη μηδενικό αν υπάρχει μια ώρα, παρελθούσα, παρούσα ή μελλοντική όταν ισχύει η θερινή ώρα).

Σημείωση

Αν και σε πολλές περιπτώσεις, η αλλαγή της μεταβλητής περιβάλλοντος 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 είναι το μη ρυθμιζόμενο, ρολόι υψηλής ανάλυσης.

Added in version 3.3.

time.CLOCK_MONOTONIC

Ρολόι που δεν μπορεί να ρυθμιστεί και αντιπροσωπεύει τον μονότονο χρόνο από ένα απροσδιόριστο σημείο εκκίνησης.

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.

Added in version 3.3.

time.CLOCK_PROF

Υψηλής ανάλυσης χρονομετρητής ανά διεργασία από την CPU.

Διαθεσιμότητα: FreeBSD, NetBSD >= 7, OpenBSD.

Added in version 3.7.

time.CLOCK_TAI

International Atomic Time

Το σύστημα πρέπει να έχει έναν τρέχοντα πίνακα leap second για να δώσει τη σωστή απάντηση. Το λογισμικό PTP ή NTP μπορεί να διατηρήσει έναν πίνακα leap second.

Added in version 3.9.

time.CLOCK_THREAD_CPUTIME_ID

Ρολόι χρόνου CPU ειδικό για νήμα.

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.

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() από αυτή τη μονάδα.

Υποσημειώσεις