Python тіліндегі күннен бастап аптаның немесе айдың күнін жол ретінде алыңыз (мысалы, неміс немесе ағылшын тілі)

Іскерлік

Python стандартты кітапханасының datetime мүмкіндігін пайдаланып, күн жолынан datetime нысанын жасауға және одан жол ретінде апта немесе ай күнінің атын алуға болады. Дегенмен, сол жолдардың тілі ортаның тіліне (ел немесе аймақ параметрі) байланысты.

Мұнда кез келген тілде жол ретінде күннен аптаның немесе айдың атын алудың екі жолы берілген.

  • Жергілікті тіл модулімен тілді өзгертіңіз
  • Жаңа функцияны анықтаңыз

Datetime модулінің негізгі қолданылуы және күн мен уақыт (күн, уақыт) және жолдар арасында түрлендіруге арналған strptime() және strftime() әдістері туралы қосымша ақпарат алу үшін келесі мақалаларды қараңыз.

Жергілікті тіл модулімен тілді өзгертіңіз

Python стандартты кітапханасы тіл параметрлерін басқару үшін тіл модулін қамтамасыз етеді.

Бұл ортаға байланысты, бірақ мысал ортасында strftime() әдісінде келесі пішімдеу кодын пайдаланып, апта күндері мен айлардың атауларын ағылшын тіліндегі белгілермен алуға болады.
%A,%a,%B,%b

Келесі мысал күн мен уақытты (күн мен уақыт) көрсету үшін datetime нысанын пайдаланады, бірақ тек күн ақпараты бар күн нысаны үшін де дәл солай.

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.getlocale() арқылы тексеріледі және ол Ешбір мәніне орнатылады. Бұл нәтиже қоршаған ортаға байланысты.

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

Жапон тілінде күн мен ай атауларын алу үшін locale.setlocale() ішіндегі LC_TIME – жапон (UTF-8) ja_JP.UTF-8. locale.LC_ALL барлық тіл санаттарын орнату үшін пайдаланылуы мүмкін, бірақ бұл әсер ететінін ескеріңіз, мысалы, 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

Кез келген тілдегі күн жолынан берілген күн үшін апта күнін алғыңыз келсе, төмендегі қадамдарды орындау арқылы мұны істеуге болады.

  • locale.setlocale() ішіндегі қалаған тіл параметрінің (мысалы, ja_JP.UTF-8) мәніне LC_TIME
  • Жолды strptime() арқылы datetime нысанына түрлендіру
  • Келесі пішімдеу кодымен сол datetime нысанындағы strftime() қызметіне қоңырау шалыңыз:%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)
# 月曜日

Жаңа функцияны анықтаңыз

Бұған жаңа функцияны анықтау арқылы қол жеткізуге болады.

datetime нысанының weekday() әдісі дүйсенбі үшін 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'>

Дүйсенбі үшін 1 және жексенбі үшін 7 бүтін мәнді қайтаратын isoweekday() деген ұқсас әдіс бар. Нәзік айырмашылық бар екенін ескеріңіз.

print(dt.isoweekday())
# 1

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

Егер біз әрбір тіл жолы үшін апта күндерінің атауларының тізімін анықтасақ және оларды weekday() әдісімен алынған бүтін мәндерді пайдаланып шығарсақ, біз мақсатымызға жете аламыз.