Roja hefteyê an mehê ji rojek di Python de wekî rêzek (mînak almanî an îngilîzî) bistînin

Dikan

Bi karanîna demjimêra pirtûkxaneya standard a Python-ê, hûn dikarin ji rêzek tarîxê hêmanek tarîxê biafirînin û navê roja hefteyê an mehê jê re wekî rêzek bistînin. Lêbelê, zimanê wan rêzan bi cîhê (mîhenga welat an herêmê) jîngehê ve girêdayî ye.

Li vir du rê hene ku meriv navê roja hefteyê an mehê ji tarîxekê wekî rêzek bi her zimanî bigire.

  • Herêmê bi modula herêmî biguherînin
  • Fonksiyonek nû diyar bike

Ji bo bêtir agahdarî li ser karanîna bingehîn a modula datetime û rêbazên strptime() û strftime() ji bo veguheztina di navbera tarîx û dem (dîrok, dem) û rêzan de, ji kerema xwe serî li gotarên jêrîn bidin.

Bi modula herêmî re herêmî biguherînin

Pirtûkxaneya standard Python modulek herêmî peyda dike ku mîhengên herêmî kontrol bike.

Ew bi hawîrdorê ve girêdayî ye, lê di hawîrdora nimûneyê de, bi karanîna koda formatkirinê ya jêrîn di rêbaza strftime() de, navên rojên hefteyê û mehan dikarin bi nîşana îngilîzî werin wergirtin.
%A,%a,%B,%b

Mînaka jêrîn hêmanek datetime bikar tîne da ku tarîx û demjimêrê temsîl bike (dîrok û dem), lê heman tişt ji bo objeyek tarîxê ku tenê agahdariya tarîxê heye rast e.

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, mîhenga kategoriya herêmî ya ji bo formatkirina demê, bi locale.getlocale() re tê kontrol kirin, û ew li None tête danîn. Ev encam bi hawîrdorê ve girêdayî ye.

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

LC_TIME bo Japonî (UTF-8) ja_JP.UTF-8 di locale.setlocale() de da ku navên roj û mehan bi japonî bistînin. locale.LC_ALL dikare ji bo danîna hemî kategoriyên herêmî were bikar anîn, lê bala xwe bidin ku ev dê bandor bike, mînakî LC_MONETARY.

Têbînî ku ev guhertin tenê di vê kodê de bandor in. Ew nayê wê wateyê ku guhêrbarên hawîrdora pergalê dê ji nû ve werin nivîsandin.

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

Her weha hûn dikarin mîhengên herêmî biguhezînin da ku nîşaneyên zimanên din bikar bînin, wek îngilîzî an almanî.

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

Ger hûn dixwazin roja hefteyê ji bo rojek diyarkirî ji rêzek tarîxek bi her zimanî bistînin, hûn dikarin bi şopandina gavên jêrîn wiya bikin.

  • LC_TIME ji bo nirxa mîhenga zimanê xwestî (mînak ja_JP.UTF-8) li locale.setlocale()
  • Bi strptime() zivirandina ristekê bo objeyek datetime()
  • strftime() li ser wê objekta datetime bi koda formatkirina jêrîn bang bikin:%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)
# 月曜日

Fonksiyonek nû diyar bike

Ev dikare bi destnîşankirina fonksiyonek nû were bidestxistin.

Rêbaza weekday() ya object datetime ji bo Duşemê 0 û ji bo Yekşemê 6 dide.

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

Rêbazek weha heye, isoweekday(), ku ji bo Duşemê nirxek 1 û ji bo Yekşemê 7 vedigerîne. Bala xwe bidinê ku ferqek nazik heye.

print(dt.isoweekday())
# 1

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

Ger em navnîşek navên rojên hefteyê ji bo her rêzika zimanî diyar bikin û wan bi karanîna nirxên yekjimar ên ku bi rêbaza weekday() hatine bidestxistin, bistînin, em dikarin bigihîjin armanca xwe.

Copied title and URL