Користећи Питхон стандардну библиотеку датетиме, можете креирати објекат датетиме од стринга датума и добити име дана у недељи или месецу из њега као стринг. Међутим, језик тих стрингова зависи од локализације (подешавање земље или региона) окружења.
Ево два начина да добијете име дана у недељи или месецу из датума као стринг на било ком језику.
- Промените локализацију помоћу модула локализације
- Дефинишите нову функцију
За више информација о основној употреби модула датетиме и методама стрптиме() и стрфтиме() за конверзију између датума и времена (датум, време) и стрингова, погледајте следеће чланке.
- Повезани чланци:Претварање датума и времена у и из стрингова помоћу Питхон-овог датума и времена(
strftime
,strptime
)
Промените локализацију помоћу модула локализације
Питхон стандардна библиотека обезбеђује локални модул за контролу подешавања локализације.
Зависи од окружења, али у примеру окружења, коришћењем следећег кода за форматирање у методи стрфтиме(), називи дана у недељи и месеци се могу добити у енглеској нотацији.%A
,%a
,%B
,%b
Следећи пример користи објекат датетиме за представљање датума и времена (датум и време), али исто важи и за објекат датума који има само информације о датуму.
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
ЛЦ_ТИМЕ, поставка категорије језика за форматирање времена, проверава се са лоцале.гетлоцале() и постављена је на Ништа. Овај резултат зависи од окружења.
print(locale.getlocale(locale.LC_TIME))
# (None, None)
ЛЦ_ТИМЕ на јапански (УТФ-8) ја_ЈП.УТФ-8 у лоцале.сетлоцале() да бисте добили називе дана и месеца на јапанском. лоцале.ЛЦ_АЛЛ се може користити за постављање свих категорија језика, али имајте на уму да ће то утицати на, на пример, ЛЦ_МОНЕТАРИ.
Имајте на уму да су ове промене ефикасне само у овом коду. То не значи да ће варијабле системског окружења бити преписане.
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
Ако желите да добијете дан у недељи за дати датум из низа датума на било ком језику, то можете да урадите пратећи кораке у наставку.
- ЛЦ_ТИМЕ на вредност жељеног подешавања језика (нпр. ја_ЈП.УТФ-8) у лоцале.сетлоцале()
- Конвертовање стринга у објекат датума и времена помоћу стрптиме()
- Позовите стрфтиме() на том објекту датетиме са следећим кодом за форматирање:
%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)
# 月曜日
Дефинишите нову функцију
Ово се може постићи дефинисањем нове функције.
Метод веекдаи() објекта датетиме даје целобројну вредност од 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 за недељу. Имајте на уму да постоји суптилна разлика.
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
Ако дефинишемо листу имена дана у недељи за сваки низ језика и преузмемо их коришћењем целобројних вредности добијених методом веекдаи(), можемо постићи свој циљ.