Σε αυτό το άρθρο, θα μάθετε να δημιουργείτε ένα αντικείμενο χρόνου από μια συμβολοσειρά (με τη βοήθεια παραδειγμάτων).
Η strptime()
μέθοδος δημιουργεί ένα αντικείμενο χρόνου από τη δεδομένη συμβολοσειρά.
Σημείωση: Δεν μπορείτε να δημιουργήσετε datetime
αντικείμενο από κάθε συμβολοσειρά. Η συμβολοσειρά πρέπει να είναι σε συγκεκριμένη μορφή.
Παράδειγμα 1: συμβολοσειρά σε αντικείμενο χρόνου
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) print("type of date_string =", type(date_string)) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object) print("type of date_object =", type(date_object))
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
date_string = 21 Ιουνίου 2018 τύπος date_string = date_object = 2018-06-21 00:00:00 τύπος date_object =
Πώς λειτουργεί το strptime ();
Η strptime()
μέθοδος κλάσης περιλαμβάνει δύο ορίσματα:
- συμβολοσειρά (που θα μετατραπεί σε ώρα)
- μορφή κώδικα
Με βάση τον κώδικα συμβολοσειράς και μορφής που χρησιμοποιείται, η μέθοδος επιστρέφει το αντίστοιχο datetime
αντικείμενο.
Στο παραπάνω παράδειγμα:
Εδώ,
%d
- Αντιπροσωπεύει την ημέρα του μήνα. Παράδειγμα: 01, 02,…, 31%B
- Πλήρες όνομα του μήνα. Παράδειγμα: Ιανουάριος, Φεβρουάριος κ.λπ.%Y
- Έτος με τέσσερα ψηφία. Παράδειγμα: 2018, 2019 κ.λπ.
Παράδειγμα 2: συμβολοσειρά σε αντικείμενο χρόνου
from datetime import datetime dt_string = "12/11/2018 09:15:32" # Considering date is in dd/mm/yyyy format dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S") print("dt_object1 =", dt_object1) # Considering date is in mm/dd/yyyy format dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S") print("dt_object2 =", dt_object2)
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Μορφοποίηση λίστας κωδικών
Ο παρακάτω πίνακας δείχνει όλους τους κωδικούς μορφής που μπορείτε να χρησιμοποιήσετε.
Διευθυντικός | Εννοια | Παράδειγμα |
%a | Συντομευμένο όνομα της εβδομάδας. | Κυρ, Δευ,… |
%A | Πλήρες όνομα ημέρας της εβδομάδας. | Κυριακή Δευτέρα,… |
%w | Ημέρα της εβδομάδας ως δεκαδικός αριθμός. | 0, 1,…, 6 |
%d | Ημέρα του μήνα ως δεκαδικό δεκαδικό. | 01, 02,…, 31 |
%-d | Ημέρα του μήνα ως δεκαδικός αριθμός. | 1, 2,…, 30 |
%b | Συντομευμένο όνομα μήνα. | Ιαν, Φεβ…, Δεκ |
%B | Όνομα πλήρους μήνα. | Ιανουάριος Φεβρουάριος,… |
%m | Μήνας ως δεκαδικός αριθμός με μηδενική επένδυση. | 01, 02,…, 12 |
%-m | Μήνας ως δεκαδικός αριθμός. | 1, 2,…, 12 |
%y | Έτος χωρίς αιώνα ως δεκαδικός δεκαδικός αριθμός. | 00, 01,…, 99 |
%-y | Έτος χωρίς αιώνα ως δεκαδικός αριθμός. | 0, 1,…, 99 |
%Y | Έτος με αιώνα ως δεκαδικός αριθμός. | 2013, 2019 κ.λπ. |
%H | Ώρα (24ωρο ρολόι) ως δεκαδικός αριθμός με μηδενική επένδυση | 00, 01,…, 23 |
%-H | Ώρα (24ωρο ρολόι) ως δεκαδικός αριθμός. | 0, 1,…, 23 |
%I | Ώρα (ρολόι 12 ωρών) ως δεκαδικός δεκαδικός αριθμός. | 01, 02,…, 12 |
%-I | Ώρα (ρολόι 12 ωρών) ως δεκαδικός αριθμός. | 1, 2,… 12 |
%p | Το τοπικό AM ή PM. | Π.Μ. Μ.Μ |
%M | Λεπτό ως δεκαδικός αριθμός με μηδενική επένδυση. | 00, 01,…, 59 |
%-M | Λεπτό ως δεκαδικός αριθμός. | 0, 1,…, 59 |
%S | Δεύτερος ως δεκαδικός αριθμός με μηδενικό. | 00, 01,…, 59 |
%-S | Δεύτερος ως δεκαδικός αριθμός. | 0, 1,…, 59 |
%f | Μικροδευτερόλεπτο ως δεκαδικός αριθμός, μηδενικός στα αριστερά. | 000000 - 999999 |
%z | Μετατόπιση UTC με τη μορφή + HHMM ή -HHMM. | |
%Z | Όνομα ζώνης ώρας. | |
%j | Ημέρα του έτους ως μηδενικός δεκαδικός αριθμός. | 001, 002,…, 366 |
%-j | Ημέρα του έτους ως δεκαδικός αριθμός. | 1, 2,…, 366 |
%U | Αριθμός εβδομάδας του έτους (Κυριακή ως πρώτη ημέρα της εβδομάδας). Όλες οι ημέρες σε ένα νέο έτος που προηγείται της πρώτης Κυριακής θεωρείται ότι είναι στην εβδομάδα 0. | 00, 01,…, 53 |
%W | Αριθμός εβδομάδας του έτους (Δευτέρα ως πρώτη ημέρα της εβδομάδας). Όλες οι ημέρες σε ένα νέο έτος που προηγείται της πρώτης Δευτέρας θεωρούνται ότι είναι στην εβδομάδα 0. | 00, 01,…, 53 |
%c | Η κατάλληλη παράσταση ημερομηνίας και ώρας του Locale. | Δευ 30 Σεπ 07:06:05 2013 |
%x | Η κατάλληλη αναπαράσταση ημερομηνίας της περιοχής. | 09/30/13 |
%X | Η κατάλληλη αναπαράσταση της τοπικής ώρας. | 07:06:05 |
%% | Ένας κυριολεκτικός χαρακτήρας '%'. | % |
ValueError σε strptime ()
Εάν η συμβολοσειρά (πρώτο όρισμα) και ο κωδικός μορφής (δεύτερο όρισμα) περάσει στο strptime()
δεν ταιριάζει, θα λάβετε ValueError
. Για παράδειγμα:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Εάν εκτελέσετε αυτό το πρόγραμμα, θα εμφανιστεί ένα σφάλμα.
ValueError: τα δεδομένα χρόνου "12/11/2018" δεν ταιριάζουν με τη μορφή "% d% m% Y"
Προτεινόμενες αναγνώσεις: Python strftime ()