Χρησιμοποιώντας την τυπική βιβλιοθήκη datetime της Python, μπορείτε να δημιουργήσετε ένα αντικείμενο datetime από μια συμβολοσειρά ημερομηνίας και να λάβετε το όνομα της ημέρας της εβδομάδας ή του μήνα από αυτό ως συμβολοσειρά. Ωστόσο, η γλώσσα αυτών των συμβολοσειρών εξαρτάται από την τοπική γλώσσα (ρύθμιση χώρας ή περιοχής) του περιβάλλοντος.
Ακολουθούν δύο τρόποι για να λάβετε το όνομα της ημέρας της εβδομάδας ή του μήνα από μια ημερομηνία ως συμβολοσειρά σε οποιαδήποτε γλώσσα.
- Αλλαγή της τοπικής γλώσσας με την ενότητα locale
- Ορίστε μια νέα συνάρτηση
Για περισσότερες πληροφορίες σχετικά με τη βασική χρήση της ενότητας datetime και των μεθόδων strptime() και strftime() για τη μετατροπή μεταξύ ημερομηνίας και ώρας (date, time) και συμβολοσειρών, ανατρέξτε στα ακόλουθα άρθρα.
- Σχετικά άρθρα:Μετατροπή ημερομηνιών και χρόνων σε και από συμβολοσειρές με το datetime της Python(
strftime
,strptime
)
Αλλαγή τοπικής γλώσσας με την ενότητα locale
Η τυπική βιβλιοθήκη της Python παρέχει μια ενότητα locale για τον έλεγχο των ρυθμίσεων locale.
Εξαρτάται από το περιβάλλον, αλλά στο περιβάλλον του παραδείγματος, χρησιμοποιώντας τον ακόλουθο κώδικα μορφοποίησης στη μέθοδο strftime(), τα ονόματα των ημερών της εβδομάδας και των μηνών μπορούν να ληφθούν σε αγγλική γραφή.%A
, %a
, %B
, %b
Το ακόλουθο παράδειγμα χρησιμοποιεί ένα αντικείμενο datetime για την αναπαράσταση ημερομηνίας και ώρας (ημερομηνία και ώρα), αλλά το ίδιο ισχύει και για ένα αντικείμενο date που περιέχει μόνο πληροφορίες ημερομηνίας.
import datetime
import locale
dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan
Η LC_TIME, η ρύθμιση της κατηγορίας locale για τη μορφοποίηση του χρόνου, ελέγχεται με την locale.getlocale(), και ορίζεται σε None. Αυτό το αποτέλεσμα εξαρτάται από το περιβάλλον.
print(locale.getlocale(locale.LC_TIME))
# (None, None)
LC_TIME στα ιαπωνικά (UTF-8) ja_JP.UTF-8 στην locale.setlocale() για να λάβετε τα ονόματα της ημέρας και του μήνα στα ιαπωνικά. locale.LC_ALL μπορεί να χρησιμοποιηθεί για να ορίσετε όλες τις κατηγορίες locale, αλλά σημειώστε ότι αυτό θα επηρεάσει, για παράδειγμα, την LC_MONETARY, για παράδειγμα.
Σημειώστε ότι αυτές οι αλλαγές ισχύουν μόνο σε αυτόν τον κώδικα. Δεν σημαίνει ότι οι μεταβλητές περιβάλλοντος του συστήματος θα ξαναγραφούν.
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
print(locale.getlocale(locale.LC_TIME))
# ('ja_JP', 'UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# 月曜日, 月, 1月, 1
Μπορείτε επίσης να αλλάξετε τις τοπικές ρυθμίσεις για να χρησιμοποιήσετε άλλες γλωσσικές σημειώσεις, όπως τα αγγλικά ή τα γερμανικά.
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan
locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Montag, Mo, Januar, Jan
Αν θέλετε να λάβετε την ημέρα της εβδομάδας για μια δεδομένη ημερομηνία από μια συμβολοσειρά ημερομηνίας σε οποιαδήποτε γλώσσα, μπορείτε να το κάνετε ακολουθώντας τα παρακάτω βήματα.
- LC_TIME στην τιμή της επιθυμητής γλωσσικής ρύθμισης (π.χ. ja_JP.UTF-8) στην locale.setlocale()
- Μετατροπή μιας συμβολοσειράς σε αντικείμενο datetime με την strptime()
- Καλέστε την strftime() σε αυτό το αντικείμενο datetime με τον ακόλουθο κώδικα μορφοποίησης:
%A
,%a
,%B
,%b
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
s = '2018-01-01'
s_dow = datetime.datetime.strptime(s, '%Y-%m-%d').strftime('%A')
print(s_dow)
# 月曜日
Ορίστε μια νέα συνάρτηση
Αυτό μπορεί να επιτευχθεί με τον ορισμό μιας νέας συνάρτησης.
Η μέθοδος weekday() του αντικειμένου datetime δίνει μια ακέραια τιμή 0 για τη Δευτέρα και 6 για την Κυριακή.
import datetime
dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00
print(dt.weekday())
# 0
print(type(dt.weekday()))
# <class 'int'>
Υπάρχει μια παρόμοια μέθοδος, η isoweekday(), η οποία επιστρέφει μια ακέραια τιμή 1 για τη Δευτέρα και 7 για την Κυριακή. Σημειώστε ότι υπάρχει μια λεπτή διαφορά.
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
Αν ορίσουμε μια λίστα με τα ονόματα των ημερών της εβδομάδας για κάθε γλωσσική συμβολοσειρά και τις ανακτήσουμε χρησιμοποιώντας τις ακέραιες τιμές που λαμβάνονται από τη μέθοδο weekday(), μπορούμε να επιτύχουμε τον στόχο μας.