Ответы:
Из этого видно, что calendar.month_name[3]
он вернется March
, а индекс массива 0
- это пустая строка, поэтому не нужно беспокоиться и об индексации нуля.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Возвращает: декабрь
Еще немного информации на сайте Python doc
[РЕДАКТИРОВАТЬ: отличный комментарий от @GiriB] Вы также можете использовать, %b
который возвращает краткую запись для названия месяца.
mydate.strftime("%b")
Для приведенного выше примера он вернется Dec
.
mydate.strftime("%b")
возвращает короткую запись для названия месяца. (Для приведенного выше примера он вернется Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
апрель
Это не очень полезно, если вам нужно просто знать название месяца для данного числа (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_name
иmonth_abbr
range(1, 13)
в вашем примере, чтобы вы получили все 12 месяцев на выходе.
Я предложу это в случае, если (как и я) у вас есть столбец с числами месяцев в кадре данных:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Это то, что я хотел бы сделать:
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
(Это была настоящая дата, когда я написал это)
Некоторые хорошие ответы уже используют календарь, но эффект от настройки локали еще не упоминался.
Например, по-французски:
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 () […]
calendar
. Я могу, возможно, обновить текст.
Для произвольного диапазона номеров месяцев
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
даст правильный список. Настройте start
-параметр, с которого начинается январь в списке целых месяцев.
8.1. datetime - Основные типы даты и времени - Документация Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Список всех аргументов strftime. Названия месяцев и такие приятные вещи, как форматирование, оставляют заполнение нулями. Прочитайте полную страницу для таких вещей, как правила для «наивных» аргументов. Вот краткий список:% Солнце, Пн,…, Сб
% Воскресенье, понедельник, ..., суббота
% w Будний день как число, где 0 - воскресенье
% d День месяца 01, 02,…, 31
% b январь, февраль,…, декабрь
% B январь, февраль,…, декабрь
% m Номер месяца в виде нуля 01, 02,…, 12
% y двузначный год с нулевым заполнением 00, 01,…, 99
% Y 4 цифры Год 1970, 1988, 2001, 2013
% H Hour (24-часовой формат) с нулевым заполнением 00, 01,…, 23
% I час (12-часовые часы) с добавлением нуля 01, 02,…, 12
% p AM или PM.
% M минута с добавлением нуля 00, 01,…, 59
% S Второй, дополненный нулями 00, 01,…, 59
% f Микросекунда с нулевым заполнением 000000, 000001,…, 999999
% z UTC смещение в виде + ЧЧММ или -ЧЧММ +0000, -0400, +1030
% Z Название часового пояса UTC, EST, CST
% j День года с нулями 001, 002,…, 366
% U Номер недели года с добавлением нуля, дни до первого воскресенья - неделя 0
% W Номер недели в году (понедельник как первый день)
% c представление даты и времени локали. Вт 16 августа 21:30:00 1988
% x Представление даты локали. 16.08.1988 (en_US)
% X Местное представление времени. 21:30:00
%% буквальный символ "%".
Я создал свою собственную функцию преобразования чисел в соответствующий месяц.
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
calendar
модуле. Какая польза от создания собственной функции для воспроизведения тех же результатов? Кроме того, словарь будет намного быстрее, чем серия операторов elif.