Python의 날짜에서 요일 또는 월을 문자열로 가져옵니다(예: 독일어 또는 영어).

사업

Python의 표준 라이브러리인 datetime을 사용하여 날짜 문자열에서 datetime 객체를 만들고 요일 또는 월의 이름을 문자열로 가져올 수 있습니다. 그러나 해당 문자열의 언어는 환경의 로케일(국가 또는 지역 설정)에 따라 다릅니다.

다음은 모든 언어의 문자열로 날짜에서 요일 또는 월의 이름을 가져오는 두 가지 방법입니다.

  • locale 모듈로 로케일 변경
  • 새 함수 정의

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()로 확인되며 None으로 설정됩니다. 이 결과는 환경에 따라 다릅니다.

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

LC_TIME을 일본어(UTF-8)로 변환하여 locale.setlocale()의 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'>

유사한 메소드 isoweekday()가 있습니다. 이 메소드는 월요일에 대해 1, 일요일에 대해 7의 정수 값을 리턴합니다. 미세한 차이가 있으니 참고하세요.

print(dt.isoweekday())
# 1

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

각 언어 문자열에 대한 요일 이름 목록을 정의하고 weekday() 메서드에서 얻은 정수 값을 사용하여 검색하면 목표를 달성할 수 있습니다.

Copied title and URL