如何从月份编号中获取月份名称?
例如,如果我有3
,我想返回march
date.tm_month()
如何获取字符串march
?
答案 0 :(得分:291)
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
返回: 12月
的更多信息 [编辑:来自@GiriB的好评]你也可以使用%b
返回月份名称的短符号。
mydate.strftime("%b")
对于上面的示例,它将返回Dec
。
答案 1 :(得分:213)
由此可以看出calendar.month_name[3]
将返回March
,而0
的数组索引是空字符串,因此无需担心零索引。< / p>
答案 2 :(得分:41)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
四月
答案 3 :(得分:23)
如果您只需要知道给定数字(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
...
答案 4 :(得分:15)
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
答案 5 :(得分:7)
这就是我要做的事:
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 :(得分:7)
有些good answers已经使用了calendar,但是尚未提到设置locale的效果。
日历根据当前语言环境设置月份名称,例如法语:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
如果打算在代码中使用setlocale
,请确保阅读文档中的tips and caveats和extension writer部分。此处显示的示例并不代表应如何使用它。特别是从这两部分中:
在某些库例程中调用setlocale()通常是一个坏主意,因为它的副作用是会影响整个程序[…]
扩展模块永远不要调用setlocale()[…]
答案 7 :(得分:6)
我会提供这种情况(就像我一样)你在数据框中有一列月份数字:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
答案 8 :(得分:1)
要一次打印所有月份:
import datetime
monthint = list(range(1,13))
for X in monthint:
month = datetime.date(1900, X , 1).strftime('%B')
print(month)
答案 9 :(得分:1)
此脚本用于展示如何获取数据框中月份变量/列的日历月份缩写。请注意,假设月份列/变量的值都是数字,并且可能存在一些缺失值。
# Import the calendar module
import calendar
# Extract month as a number from the date column
df['Month']=pd.DatetimeIndex(df['Date']).month
# Using list comprehension extract month abbreviations for each month number
df['Month_abbr']=[calendar.month_abbr[int(i)] if pd.notna(i) else i for i in df['Month']]
答案 10 :(得分:0)
对于arbitaray月数范围
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
将产生正确的列表。从月份整数列表中的1月开始处调整start
参数。
答案 11 :(得分:0)
8.1。 datetime-基本日期和时间类型-Python 2.7.17文档 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
所有strftime参数的列表。月份名称和类似格式化之类的好东西,将零填充。阅读整页,了解诸如“天真”自变量的规则之类的内容。这是简短的列表: %a太阳,星期一,…,星期六
%A周日,周一,…,周六
%w工作日为数字,其中0为星期日
%d每月的01、02,...,31日
%b 1月,2月,…,12月
%B 1月,2月,…,12月
%m月号,以零填充的01、02,…,12
%y 2位年份的零填充00、01,…,99
%Y 4位数字的年份1970、1988、2001、2013
%H小时(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偏移量,格式为+ HHMM或-HHMM + 0000,-0400,+ 1030
%Z时区名称UTC,EST,CST
%j一年中的某天零填充001、002,...,366
%U每年补零的周号,第一个星期日之前的天是第0周
%W一年中的第几周(星期一为第一天)
%c语言环境的日期和时间表示。 1988年8月16日星期二21:30:00
%x语言环境的日期表示形式。 1988年8月16日(zh_CN)
%X语言环境的时间表示。 21:30:00
%%文字'%'字符。
答案 12 :(得分:-3)
我创建了自己的函数,将数字转换为相应的月份。
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