숫자에서 월 이름 가져 오기


230

월 번호에서 월 이름을 어떻게 알 수 있습니까?

내가 가지고있는 경우 예를 들어 3, 나는 돌아가려면march

date.tm_month()

문자열을 얻는 방법 march?

답변:


269

캘린더 API

이것에서 calendar.month_name[3]return을 볼 수 March있고의 배열 색인은 0빈 문자열이므로 0 인덱싱에 대해 걱정할 필요가 없습니다.


35
짧은 달 이름에 calendar.month_abbr [i]를 사용할 수도 있습니다 (예 : Mar.
Jay Sheth

384
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")

반품 : 12 월

Python Doc 웹 사이트 에 대한 추가 정보


[편집 : @GiriB의 훌륭한 주석] %b달 이름에 대한 짧은 표기법을 반환하는 것을 사용할 수도 있습니다 .

mydate.strftime("%b")

위의 예에서는를 반환 Dec합니다.


7
현재 날짜가 중요하지 않기 때문에 주어진 숫자 (1-12)의 월 이름 만 알고 있으면 도움이되지 않습니다. 여기서 calendar.month_name [i] 또는 calendar.month_abbr [i]가 더 유용합니다.
Jay Sheth

11
mydate.strftime("%b")월 이름에 대한 짧은 표기법을 반환합니다. (위의 예에서는을 반환합니다 Dec)
GiriB

3
영업 이익은 입력이 아닌 datetime.datetime로 정수를 사용하려는 object.You 수 MyDate가 = datetime.datetime (2019, 정수, 1, 0, 0)를 사용하지만 오히려 추한
룻거 Hofste

이것이 어떻게 질문에 대답하는지 알 수 없습니다.
cglacet

57
import datetime

monthinteger = 4

month = datetime.date(1900, monthinteger, 1).strftime('%B')

print month

4 월


35

현재 날짜가 중요하지 않기 때문에 주어진 숫자 (1-12)의 월 이름 만 알고 있으면 도움이되지 않습니다.

calendar.month_name[i]

또는

calendar.month_abbr[i]

더 유용합니다.

예를 들면 다음과 같습니다.

import calendar

for month_idx in range(1, 13):
    print (calendar.month_name[month_idx])
    print (calendar.month_abbr[month_idx])
    print ("")

샘플 출력 :

January
Jan

February
Feb

March
Mar

...

답변 주셔서 감사합니다. 내가 제안을 추가 할 수 있습니다, 당신은이 코드와의 차이 사용하는 방법을 보여주기 위해 입력과 출력의 예를 추가 할 수 month_namemonth_abbr
jmax에

이것은 도움이 range(1, 13)됩니다. 예제에서 사용 하는 것이 좋습니다 . 따라서 출력에서 ​​12 개월을 모두 얻을 수 있습니다.
davejagoda 2016 년

21
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'

10

데이터 프레임에 월 번호 열이있는 경우 (나처럼) 이것을 제공 할 것입니다.

df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])

10

이것이 내가 할 것입니다 :

from datetime import *

months = ["Unknown",
          "January",
          "Febuary",
          "March",
          "April",
          "May",
          "June",
          "July",
          "August",
          "September",
          "October",
          "November",
          "December"]

now = (datetime.now())
year = (now.year)
month = (months[now.month])
print(month)

출력 :

>>> September

(이것이 내가 쓴 진짜 날짜였습니다)


3

일부 좋은의 대답은 이미 사용하게 달력을 하지만 설정의 효과 로케일은 아직 언급되지 않았습니다.

예를 들어 프랑스어로 :

import locale
import calendar

locale.setlocale(locale.LC_ALL, 'fr_FR')

assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'

setlocale코드 에서 사용할 계획이라면 설명서에서 팁과 경고확장기 작성기 섹션 을 읽으십시오 . 여기에 표시된 예는 사용 방법을 나타내지 않습니다. 특히 다음 두 섹션에서

일반적으로 일부 라이브러리 루틴에서 setlocale ()을 호출하는 것은 좋지 않습니다. 부작용으로 전체 프로그램에 영향을 미치기 때문에 […]

확장 모듈은 setlocale ()을 호출해서는 안된다 […]


1
추가로, 대체 문화권을 추가하거나 try / except에서 setLocale 호출을 래핑하는 것이 좋습니다. 해당 문화권을 사용할 수없는 경우 예외가 발생하기 때문에 (이를 시도한 후에 나에게만 발생합니다.)
firepol

로케일을 설정하는 것은 아마도 그 코드 근처에서 할 일이 아니기 때문에 코드를 그대로 두는 것 같습니다. 로케일 설정이의 값에 미치는 영향을 강조하고 싶었습니다 calendar. 텍스트를 업데이트 할 수 있습니다.
cglacet

1

월수의 수목 범위

month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)

올바른 목록을 산출합니다. start월 정수 목록에서 1 월이 시작되는 위치에서-매개 변수를 조정 하십시오.


0

8.1. datetime — 기본 날짜 및 시간 유형 — Python 2.7.17 설명서 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

모든 strftime 인수의 목록입니다. 달의 이름과 서식을 0으로 채우는 것과 같은 멋진 것들. "순진한"인수 규칙과 같은 내용은 전체 페이지를 참조하십시오. 다음은 간단한 목록입니다. % a Sun, Mon,…, Sat

% 일요일, 월요일,…, 토요일

숫자로 % w 평일 (0은 일요일 임)

% d 달의 일 01, 02,…, 31

% b 1 월, 2 월,…, 12 월

% B 1 월, 2 월,…, 12 월

% m 0, 01, 02,…, 12의 월 번호

% y 2 자리 연도 0으로 채워짐 00, 01,…, 99

% Y 4 자리 1970 년, 1988 년, 2001 년, 2013 년

% H 시간 (24 시간제) 0으로 채워짐 00, 01,…, 23

% I 시간 (12 시간제) 0으로 채워짐 01, 02,…, 12

% p AM 또는 PM.

% M 분이 0으로 채워짐 00, 01,…, 59

% S 두 번째 0으로 채워진 00, 01,…, 59

% f 마이크로 초 제로 패딩 000000, 000001,…, 999999

+ HHMM 또는 -HHMM +0000, -0400, +1030 형식의 % z UTC 오프셋

% Z 시간대 이름 UTC, EST, CST

% j 001, 002,…, 366이 0 인 요일

% U 채워진 연도의 주 번호, 첫 번째 일요일 전날은 0 주입니다.

% W 연도의 주 번호 (월요일은 첫날)

% c 로케일의 날짜 및 시간 표현. 화 8 월 16 일 21:30:00 1988

% x 로케일 날짜 표시 1988 년 8 월 16 일 (en_US)

% X 로케일의 시간 표현. 21:30:00

%% 리터럴 '%'문자


-6

숫자를 해당 월로 변환하는 자체 함수를 만들었습니다.

def month_name (number):
    if number == 1:
        return "January"
    elif number == 2:
        return "February"
    elif number == 3:
        return "March"
    elif number == 4:
        return "April"
    elif number == 5:
        return "May"
    elif number == 6:
        return "June"
    elif number == 7:
        return "July"
    elif number == 8:
        return "August"
    elif number == 9:
        return "September"
    elif number == 10:
        return "October"
    elif number == 11:
        return "November"
    elif number == 12:
        return "December"

그런 다음 함수를 호출 할 수 있습니다. 예를 들면 다음과 같습니다.

print (month_name (12))

출력 :

>>> December

3
다른 답변에서 볼 수 있듯이이 기능은 이미 내장 calendar모듈에 있습니다. 동일한 결과를 복제하기 위해 자체 함수를 작성하면 어떤 이점이 있습니까? 또한 사전은 일련의 elif 문보다 훨씬 빠릅니다.
Tom

4
다른 모든 문제 외에도 함수는 영어 로켈에서만 작동합니다.
mick88
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.