Добијте дан у недељи или месецу из датума у ​​Питхон-у као стринг (нпр. немачки или енглески)

Бусинесс

Користећи Питхон стандардну библиотеку датетиме, можете креирати објекат датетиме од стринга датума и добити име дана у недељи или месецу из њега као стринг. Међутим, језик тих стрингова зависи од локализације (подешавање земље или региона) окружења.

Ево два начина да добијете име дана у недељи или месецу из датума као стринг на било ком језику.

  • Промените локализацију помоћу модула локализације
  • Дефинишите нову функцију

За више информација о основној употреби модула датетиме и методама стрптиме() и стрфтиме() за конверзију између датума и времена (датум, време) и стрингова, погледајте следеће чланке.

Промените локализацију помоћу модула локализације

Питхон стандардна библиотека обезбеђује локални модул за контролу подешавања локализације.

Зависи од окружења, али у примеру окружења, коришћењем следећег кода за форматирање у методи стрфтиме(), називи дана у недељи и месеци се могу добити у енглеској нотацији.
%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'>

Ако дефинишемо листу имена дана у недељи за сваки низ језика и преузмемо их коришћењем целобројних вредности добијених методом веекдаи(), можемо постићи свој циљ.

Copied title and URL