Получить название месяца из номера - PullRequest
180 голосов
/ 02 июля 2011

Как я могу получить название месяца из номера месяца?

Например, если у меня есть 3, я хочу вернуть march

date.tm_month()

Как получить строку march?

Ответы [ 9 ]

304 голосов
/ 02 июля 2011
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")

Возвраты: Декабрь

Дополнительная информация о веб-сайте Python doc


[РЕДАКТИРОВАТЬ: отличный комментарий от@GiriB] Вы также можете использовать %b, который возвращает краткую запись для названия месяца.

mydate.strftime("%b")

Для приведенного выше примера будет возвращено Dec.

218 голосов
/ 02 июля 2011

Календарь API

Из этого видно, что calendar.month_name[3] вернет March, а индекс массива 0 будет пустой строкой, поэтому не нужно беспокоиться и об индексации нуля.

43 голосов
/ 11 февраля 2015
import datetime

monthinteger = 4

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

print month

Апрель

24 голосов
/ 12 апреля 2016

Это не очень полезно, если вам нужно просто знать название месяца для данного числа (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

...
16 голосов
/ 07 января 2015
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
7 голосов
/ 30 сентября 2016

Вот что я хотел бы сделать:

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

(Это была настоящая дата, когда я написал это)

6 голосов
/ 21 марта 2016

Я предложу это, если (как и я) у вас есть столбец с числами месяцев в кадре данных:

df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
0 голосов
/ 15 августа 2018

Для произвольного диапазона номеров месяцев

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

даст правильный список.Настройте start -параметр, с которого начинается январь в списке целых месяцев.

0 голосов
/ 09 мая 2017

Я создал свою собственную функцию, конвертирующую числа в соответствующий месяц.

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
...