从数字中获取月份名称

时间:2011-07-02 14:17:22

标签: python datetime date

如何从月份编号中获取月份名称?

例如,如果我有3,我想返回march

date.tm_month()

如何获取字符串march

13 个答案:

答案 0 :(得分:291)

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

返回: 12月

有关Python doc website

的更多信息

[编辑:来自@GiriB的好评]你也可以使用%b返回月份名称的短符号。

mydate.strftime("%b")

对于上面的示例,它将返回Dec

答案 1 :(得分:213)

Calendar API

由此可以看出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 caveatsextension 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