Duke përdorur datën standarde të bibliotekës Python, mund të krijoni një objekt datatime nga një varg data dhe të merrni emrin e ditës së javës ose muajit prej tij si varg. Megjithatë, gjuha e atyre vargjeve varet nga vendndodhja (vendosja e vendit ose rajonit) të mjedisit.
Këtu janë dy mënyra për të marrë emrin e ditës së javës ose muajit nga një datë si varg në çdo gjuhë.
- Ndryshoni vendndodhjen me modulin lokal
- Përcaktoni një funksion të ri
Për më shumë informacion mbi përdorimin bazë të modulit datatime dhe metodat strptime() dhe strftime() për konvertimin ndërmjet datës dhe orës (data, ora) dhe vargjet, ju lutemi referojuni artikujve të mëposhtëm.
- Artikuj të ngjashëm:Konvertimi i datave dhe orëve në dhe nga vargjet me datën e Python(
strftime
,strptime
)
Ndrysho vendndodhjen me modulin lokal
Biblioteka standarde Python ofron një modul lokal për të kontrolluar cilësimet e vendndodhjes.
Varet nga mjedisi, por në mjedisin e shembullit, duke përdorur kodin e formatimit të mëposhtëm në metodën strftime(), emrat e ditëve të javës dhe muajve mund të merren në shënimin anglisht.%A
,%a
,%B
,%b
Shembulli i mëposhtëm përdor një objekt datatime për të përfaqësuar datën dhe kohën (datën dhe orën), por e njëjta gjë është e vërtetë për një objekt datë që ka vetëm informacionin e datës.
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, cilësimi i kategorisë lokale për formatimin e kohës, kontrollohet me locale.getlocale() dhe vendoset në Asnjë. Ky rezultat varet nga mjedisi.
print(locale.getlocale(locale.LC_TIME))
# (None, None)
LC_TIME në japonisht (UTF-8) ja_JP.UTF-8 në locale.setlocale() për të marrë emrat e ditëve dhe muajve në japonisht. locale.LC_ALL mund të përdoret për të vendosur të gjitha kategoritë lokale, por kini parasysh se kjo do të ndikojë, për shembull, LC_MONETARY.
Vini re se këto ndryshime janë efektive vetëm në këtë kod. Kjo nuk do të thotë që variablat e mjedisit të sistemit do të rishkruhen.
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
Mund të ndryshoni gjithashtu cilësimet e vendndodhjes për të përdorur shënime të gjuhëve të tjera, si p.sh. anglisht ose gjermanisht.
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
Nëse dëshironi të merrni ditën e javës për një datë të caktuar nga një varg datash në çdo gjuhë, mund ta bëni këtë duke ndjekur hapat e mëposhtëm.
- LC_TIME në vlerën e cilësimit të gjuhës së dëshiruar (p.sh. ja_JP.UTF-8) në locale.setlocale()
- Konvertimi i një vargu në një objekt datatime me strptime()
- Thirrni strftime() në atë objekt datetime me kodin e formatimit të mëposhtëm:
%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)
# 月曜日
Përcaktoni një funksion të ri
Kjo mund të arrihet duke përcaktuar një funksion të ri.
Metoda weekday() e objektit datetime jep një vlerë të plotë prej 0 për të hënën dhe 6 për të dielën.
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'>
Ekziston një metodë e ngjashme, isoweekday(), e cila kthen një vlerë të plotë prej 1 për të hënën dhe 7 për të dielën. Vini re se ka një ndryshim delikate.
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
Nëse përcaktojmë një listë me emra të ditëve të javës për çdo varg gjuhësor dhe i marrim ato duke përdorur vlerat e plota të marra me metodën weekday(), mund të arrijmë qëllimin tonë.