Gamit ang standard library datetime ng Python, maaari kang lumikha ng datetime object mula sa isang string ng petsa at makuha ang pangalan ng araw ng linggo o buwan mula dito bilang isang string. Gayunpaman, ang wika ng mga string na iyon ay nakadepende sa lokal (bansa o setting ng rehiyon) ng kapaligiran.
Narito ang dalawang paraan upang makuha ang pangalan ng araw ng linggo o buwan mula sa isang petsa bilang string sa anumang wika.
- Baguhin ang locale gamit ang locale module
- Tukuyin ang isang bagong function
Para sa higit pang impormasyon sa pangunahing paggamit ng datetime module at ang mga pamamaraan na strptime() at strftime() para sa pag-convert sa pagitan ng petsa at oras (petsa, oras) at mga string, mangyaring sumangguni sa mga sumusunod na artikulo.
- Mga Kaugnay na Artikulo:Pag-convert ng mga petsa at oras patungo at mula sa mga string gamit ang datetime ng Python(
strftime
,strptime
)
Baguhin ang locale gamit ang locale module
Ang Python standard library ay nagbibigay ng locale module para makontrol ang locale settings.
Depende ito sa environment, ngunit sa halimbawang environment, gamit ang sumusunod na formatting code sa strftime() method, ang mga pangalan ng mga araw ng linggo at buwan ay maaaring makuha sa English notation.%A
,%a
,%B
,%b
Ang sumusunod na halimbawa ay gumagamit ng isang datetime object upang kumatawan sa petsa at oras (petsa at oras), ngunit ang parehong ay totoo para sa isang petsa object na may lamang impormasyon ng petsa.
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
Ang LC_TIME, ang setting ng kategorya ng lokal para sa pag-format ng oras, ay nilagyan ng check sa locale.getlocale(), at ito ay nakatakda sa Wala. Ang resultang ito ay nakasalalay sa kapaligiran.
print(locale.getlocale(locale.LC_TIME))
# (None, None)
LC_TIME sa Japanese (UTF-8) ja_JP.UTF-8 sa locale.setlocale() upang makuha ang mga pangalan ng araw at buwan sa Japanese. locale.LC_ALL ay maaaring gamitin upang itakda ang lahat ng lokal na kategorya, ngunit tandaan na ito ay makakaapekto, halimbawa LC_MONETARY, halimbawa.
Tandaan na ang mga pagbabagong ito ay epektibo lamang sa code na ito. Hindi ito nangangahulugan na ang mga variable ng kapaligiran ng system ay muling isusulat.
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
Maaari mo ring baguhin ang mga setting ng lokal upang gumamit ng iba pang mga notasyon ng wika, gaya ng English o German.
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
Kung gusto mong makuha ang araw ng linggo para sa isang partikular na petsa mula sa string ng petsa sa anumang wika, magagawa mo ito sa pamamagitan ng pagsunod sa mga hakbang sa ibaba.
- LC_TIME sa halaga ng gustong setting ng wika (hal. ja_JP.UTF-8) sa locale.setlocale()
- Pag-convert ng isang string sa isang datetime object na may strptime()
- Tumawag sa strftime() sa datetime object na may sumusunod na formatting code:
%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)
# 月曜日
Tukuyin ang isang bagong function
Ito ay maaaring makamit sa pamamagitan ng pagtukoy ng isang bagong function.
Ang weekday() method ng datetime object ay nagbibigay ng integer value na 0 para sa Lunes at 6 para sa Linggo.
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'>
Mayroong katulad na paraan, isoweekday(), na nagbabalik ng integer value na 1 para sa Lunes at 7 para sa Linggo. Tandaan na mayroong banayad na pagkakaiba.
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
Kung tutukuyin namin ang isang listahan ng mga pangalan ng mga araw ng linggo para sa bawat string ng wika at kukunin ang mga ito gamit ang mga integer value na nakuha ng weekday() na pamamaraan, makakamit namin ang aming layunin.