Fáðu vikudag eða mánuð úr dagsetningu í Python sem streng (t.d. þýska eða enska)

Viðskipti

Með því að nota staðlaða dagsetningartíma bókasafnsins Python geturðu búið til datetime hlut úr dagsetningarstreng og fengið nafn vikudags eða mánaðar úr honum sem streng. Hins vegar fer tungumál þessara strengja eftir staðsetningu (lands eða svæðis) umhverfisins.

Hér eru tvær leiðir til að fá nafn vikudags eða mánaðar frá dagsetningu sem streng á hvaða tungumáli sem er.

  • Breyttu staðsetningunni með staðareiningunni
  • Skilgreindu nýja aðgerð

Fyrir frekari upplýsingar um grunnnotkun dagsetningareiningarinnar og aðferðirnar strptime() og strftime() til að umbreyta á milli dagsetningar og tíma (dagsetning, tími) og strengja, vinsamlegast skoðaðu eftirfarandi greinar.

Breyttu staðarvali með svæðiseiningu

Python staðlaða bókasafnið býður upp á staðsetningareiningu til að stjórna staðsetningarstillingunum.

Það fer eftir umhverfinu, en í dæmisumhverfinu, með því að nota eftirfarandi sniðkóða í strftime() aðferðinni, er hægt að fá nöfn vikudaga og mánaða með enskum nótum.
%A,%a,%B,%b

Eftirfarandi dæmi notar datetime hlut til að tákna dagsetningu og tíma (dagsetning og tími), en það sama á við um dagsetningarhlut sem hefur aðeins dagsetningarupplýsingar.

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, staðsetningarflokkastillingin fyrir tímasnið, er athugað með locale.getlocale() og hún er stillt á None. Þessi niðurstaða fer eftir umhverfinu.

print(locale.getlocale(locale.LC_TIME))
# (None, None)

LC_TIME í japönsku (UTF-8) ja_JP.UTF-8 í locale.setlocale() til að fá dag- og mánaðarnöfn á japönsku. locale.LC_ALL er hægt að nota til að stilla alla staðsetningarflokka, en athugaðu að þetta mun hafa áhrif á, til dæmis LC_MONETARY, til dæmis.

Athugaðu að þessar breytingar eru aðeins virkar í þessum kóða. Það þýðir ekki að kerfisumhverfisbreyturnar verði endurskrifaðar.

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

Þú getur líka breytt staðsetningarstillingum til að nota önnur tungumálamerki, eins og ensku eða þýsku.

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

Ef þú vilt fá vikudaginn fyrir tiltekna dagsetningu úr dagsetningarstreng á hvaða tungumáli sem er, geturðu gert það með því að fylgja skrefunum hér að neðan.

  • LC_TIME að gildi viðkomandi tungumálastillingar (t.d. ja_JP.UTF-8) í locale.setlocale()
  • Umbreytir streng í datetime hlut með strptime()
  • Hringdu í strftime() á þeim datetime hlut með eftirfarandi sniðkóða:%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)
# 月曜日

Skilgreindu nýja aðgerð

Þetta er hægt að ná með því að skilgreina nýja aðgerð.

Weekday() aðferðin fyrir datetime hlutinn gefur heiltölugildið 0 fyrir mánudag og 6 fyrir sunnudag.

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'>

Það er til svipuð aðferð, isoweekday(), sem skilar heiltölugildi 1 fyrir mánudag og 7 fyrir sunnudag. Athugaðu að það er lúmskur munur.

print(dt.isoweekday())
# 1

print(type(dt.isoweekday()))
# <class 'int'>

Ef við skilgreinum lista yfir nöfn vikudaga fyrir hvern tungumálastreng og sækjum þau með heiltölugildunum sem fæst með weekday() aðferðinni, getum við náð markmiði okkar.

Copied title and URL