Πώς να μορφοποιήσετε ημερομηνίες στην Python

Εισαγωγή

Η Python συνοδεύεται από μια ποικιλία χρήσιμων αντικειμένων που μπορούν να χρησιμοποιηθούν εκτός συσκευασίας. Τα αντικείμενα ημερομηνίας είναι παραδείγματα τέτοιων αντικειμένων. Οι τύποι ημερομηνιών είναι δύσκολο να χειριστούν από την αρχή, λόγω της πολυπλοκότητας των ημερομηνιών και των ωρών. Ωστόσο, τα αντικείμενα ημερομηνίας Python καθιστούν εξαιρετικά εύκολη τη μετατροπή ημερομηνιών στις επιθυμητές μορφές συμβολοσειράς.

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

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

Για παράδειγμα, μπορεί να χρειαστεί να αντιπροσωπεύσετε μια τιμή ημερομηνίας αριθμητικά όπως "02-23-2023". Από την άλλη πλευρά, ίσως χρειαστεί να γράψετε την ίδια τιμή ημερομηνίας σε μεγαλύτερη μορφή κειμένου όπως "23 Φεβρουαρίου 2023". Σε ένα άλλο σενάριο, μπορεί να θέλετε να εξαγάγετε τον μήνα σε μορφή συμβολοσειράς από μια αριθμητικά διαμορφωμένη τιμή ημερομηνίας.

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

Η ενότητα ημερομηνίας

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

import datetime

Μπορούμε να αναπαραστήσουμε τιμές χρόνου χρησιμοποιώντας το time τάξη. Τα χαρακτηριστικά για το time Η τάξη περιλαμβάνει την ώρα, τα λεπτά, το δευτερόλεπτο και το μικροδευτερόλεπτο.

Σημείωση: Τα επιχειρήματα για την time η τάξη είναι προαιρετική. Αν και αν δεν καθορίσετε κανένα όρισμα, θα λάβετε πίσω έναν χρόνο 0, ο οποίος είναι απίθανο να είναι αυτό που χρειάζεστε τις περισσότερες φορές.

Για παράδειγμα, μπορείτε να αρχικοποιήσετε ένα αντικείμενο χρόνου με τιμή 1 ώρα, 10 λεπτά, 20 δευτερόλεπτα και 13 μικροδευτερόλεπτα χρησιμοποιώντας:

t = datetime.time(1, 10, 20, 13)

Για να δούμε την ώρα, ας χρησιμοποιήσουμε το print λειτουργία:

print(t)

Για να εξαγάγετε πεδία, όπως η ώρα, το λεπτό, το δευτερόλεπτο ή το μικροδευτερόλεπτο – μπορείτε να αποκτήσετε πρόσβαση σε κάθε πεδίο αντίστοιχα:

print('hour:', t.hour)

Τα λεπτά, τα δευτερόλεπτα και τα μικροδευτερόλεπτα για τον παραπάνω χρόνο μπορούν να ανακτηθούν ως εξής:

print('Minutes:', t.minute) 
print('Seconds:', t.second) 
print('Microsecond:', t.microsecond) 

Οι τιμές για την ημερολογιακή ημερομηνία μπορούν να αναπαρασταθούν μέσω του date τάξη. Οι παρουσίες θα έχουν χαρακτηριστικά για το έτος, τον μήνα και την ημέρα.

Ας καλέσουμε το today() τρόπος για να δείτε τη σημερινή ημερομηνία:

import datetime

today = datetime.date.today()
print(today) 

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

Τώρα ας καλέσουμε το ctime μέθοδος εκτύπωσης της ημερομηνίας σε άλλη μορφή:

print('ctime:', today.ctime())

Η ctime Η μέθοδος χρησιμοποιεί μεγαλύτερη μορφή ημερομηνίας-ώρας από τα παραδείγματα που είδαμε πριν. Αυτή η μέθοδος χρησιμοποιείται κυρίως για τη μετατροπή Unix-time (ο αριθμός των δευτερολέπτων από την 1η Ιανουαρίου 1970) σε μορφή συμβολοσειράς.

Και εδώ είναι πώς μπορούμε να εμφανίσουμε το έτος, τον μήνα και την ημέρα χρησιμοποιώντας το date τάξη:

print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)

Αυτο εχει ως αποτελεσμα:

Year: 2022
Month: 9
Day : 15

Μετατροπή ημερομηνιών σε συμβολοσειρές με strftime()

Τώρα που ξέρετε πώς να δημιουργείτε αντικείμενα Ημερομηνία και Ώρα, ας μάθουμε πώς να τα μορφοποιούμε σε πιο ευανάγνωστες συμβολοσειρές.

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

time.strftime(format, t)

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

Αυτή η μέθοδος μπορεί επίσης να χρησιμοποιηθεί σε α datetime αντιταχθείτε απευθείας, όπως φαίνεται στο ακόλουθο παράδειγμα:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))

Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!

Χρησιμοποιήσαμε τις ακόλουθες συμβολοσειρές χαρακτήρων για να μορφοποιήσουμε την ημερομηνία:

  • %b: Επιστρέφει τους τρεις πρώτους χαρακτήρες του ονόματος του μήνα. Στο παράδειγμά μας, επέστρεψε το "Sep".
  • %d: Επιστρέφει ημέρα του μήνα, από 1 έως 31. Στο παράδειγμά μας, επέστρεψε "15".
  • %Y: Επιστρέφει το έτος σε τετραψήφια μορφή. Στο παράδειγμά μας, επέστρεψε το "2022".
  • %H: Επιστρέφει την ώρα. Στο παράδειγμά μας, επέστρεψε "00".
  • %M: Επιστρέφει το λεπτό, από το 00 στο 59. Στο παράδειγμά μας, επέστρεψε "00".
  • %S: Επιστρέφει το δεύτερο, από το 00 στο 59. Στο παράδειγμά μας, επέστρεψε "00".

Δεν περάσαμε χρόνο, επομένως οι τιμές για το χρόνο είναι όλες "00". Το ακόλουθο παράδειγμα δείχνει πώς μπορεί επίσης να διαμορφωθεί η ώρα:

import datetime

x = datetime.datetime(2022, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))

Η πλήρης λίστα κωδικών χαρακτήρων

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

  • %a: Επιστρέφει τους τρεις πρώτους χαρακτήρες της καθημερινής ημέρας, π.χ. Τετ.
  • %A: Επιστρέφει το πλήρες όνομα της καθημερινής ημέρας, π.χ. Τετάρτη.
  • %B: Επιστρέφει το πλήρες όνομα του μήνα, π.χ. Σεπτέμβριος.
  • %w: Επιστρέφει την ημέρα της εβδομάδας ως αριθμό, από το 0 έως το 6, με την Κυριακή να είναι 0.
  • %m: Επιστρέφει τον μήνα ως αριθμό, από το 01 έως το 12.
  • %p: Επιστρέφει AM/PM για ώρα.
  • %y: Επιστρέφει το έτος σε διψήφια μορφή, δηλαδή χωρίς τον αιώνα. Για παράδειγμα, "18" αντί για "2018".
  • %f: Επιστρέφει μικροδευτερόλεπτο από 000000 έως 999999.
  • %Z: Επιστρέφει τη ζώνη ώρας.
  • %z: Επιστρέφει μετατόπιση UTC.
  • %j: Επιστρέφει τον αριθμό των ημερών του έτους, από 001 έως 366.
  • %W: Εμφανίζει τον αριθμό της εβδομάδας του έτους, από 00 έως 53, με τη Δευτέρα να υπολογίζεται ως η πρώτη ημέρα της εβδομάδας.
  • %U: Εμφανίζει τον αριθμό της εβδομάδας του έτους, από 00 έως 53, με την Κυριακή να υπολογίζεται ως η πρώτη ημέρα κάθε εβδομάδας.
  • %c: Επιστρέφει την τοπική έκδοση ημερομηνίας και ώρας.
  • %x: Επιστρέφει την τοπική έκδοση της ημερομηνίας.
  • %X: Επιστρέφει την τοπική έκδοση του χρόνου.

Εξετάστε το ακόλουθο παράδειγμα:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime('%b/%d/%Y'))

Και εδώ είναι πώς μπορείτε να αποκτήσετε μόνο τον μήνα:

print(x.strftime('%B'))

Ας εμφανίσουμε το έτος:

print(x.strftime('%Y'))

Σε αυτό το παράδειγμα χρησιμοποιήσαμε τον κώδικα μορφής %Y. Παρατηρήστε ότι το Y είναι με κεφαλαία. Τώρα γράψε το με πεζά:

print(x.strftime('%y'))

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

Μετατροπή συμβολοσειρών σε ημερομηνίες με strptime

Η strftime() Η μέθοδος μας βοήθησε να μετατρέψουμε αντικείμενα ημερομηνίας σε πιο ευανάγνωστες συμβολοσειρές. ο strptime() Η μέθοδος κάνει το αντίθετο, δηλαδή παίρνει συμβολοσειρές και τις μετατρέπει σε αντικείμενα ημερομηνίας που μπορεί να καταλάβει η Python.

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

Εδώ είναι η σύνταξη για τη μέθοδο:

datetime.strptime(string, format)

Η string παράμετρος είναι η τιμή σε μορφή συμβολοσειράς που θέλουμε να μετατρέψουμε σε μορφή ημερομηνίας. ο format παράμετρος είναι η οδηγία που καθορίζει τη μορφή που πρέπει να ληφθεί μέχρι την ημερομηνία μετά τη μετατροπή.

Για παράδειγμα, ας υποθέσουμε ότι πρέπει να μετατρέψουμε τη συμβολοσειρά "9/15/22" σε a datetime αντικείμενο.

Ας εισάγουμε πρώτα το datetime μονάδα μέτρησης:

from datetime import datetime

Στη συνέχεια, μπορούμε να ορίσουμε την ημερομηνία με τη μορφή συμβολοσειράς:

str = '9/15/22'

Η Python δεν θα μπορεί να κατανοήσει την παραπάνω συμβολοσειρά ως ώρα ημερομηνίας μέχρι να τη μετατρέψουμε σε πραγματική datetime αντικείμενο. Μπορούμε να το κάνουμε με επιτυχία καλώντας το strptime μέθοδος.

Εκτελέστε την ακόλουθη εντολή για να μετατρέψετε τη συμβολοσειρά:

date_object = datetime.strptime(str, '%m/%d/%y')

Ας καλέσουμε τώρα το print λειτουργία για την εμφάνιση της συμβολοσειράς datetime μορφή:

print(date_object)

Όπως μπορείτε να δείτε, η μετατροπή ήταν επιτυχής!

Τώρα μπορείτε να μετατρέψετε αυτό το αντικείμενο ημερομηνίας σε οποιαδήποτε άλλη μορφή συμβολοσειράς.

Ο χειρισμός διαφορετικών διαχωριστών είναι τόσο εύκολος όσο η χρήση τους στη συμβολοσειρά μορφοποίησης:

from datetime import datetime

str = '9-15-22'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)

Συμπέρασμα

Σε αυτό το άρθρο, μελετήσαμε πώς να μορφοποιήσουμε ημερομηνίες στην Python. Είδαμε πώς το datetime Η ενότητα στην Python μπορεί να χρησιμοποιηθεί για τον χειρισμό των τιμών ημερομηνίας και ώρας. Η ενότητα περιέχει έναν αριθμό κλάσεων που μπορούν να χρησιμοποιηθούν για το σκοπό αυτό. Για παράδειγμα, το time η κλάση χρησιμοποιείται για να αναπαραστήσει τιμές χρόνου ενώ η date Η κλάση χρησιμοποιείται για την αναπαράσταση τιμών ημερολογιακής ημερομηνίας.

Σφραγίδα ώρας:

Περισσότερα από Stackabuse