从数字获取月份名称

2025-02-05 13:24:00
admin
原创
75
摘要:问题描述:如何从月份数字获取月份名称?例如,如果我有3,我想返回marchdate.tm_month() 如何获取字符串march?解决方案 1:import datetime mydate = datetime.datetime.now() mydate.strftime("%B") 退...

问题描述:

如何从月份数字获取月份名称?

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

date.tm_month()

如何获取字符串march


解决方案 1:

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

退货时间:12 月

Python 文档网站上的更多信息


[编辑:@GiriB 的精彩评论]您还可以使用%b它返回月份名称的简短表示法。

mydate.strftime("%b")

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

解决方案 2:

日历 API

由此可以看出calendar.month_name[3]将返回March,并且的数组索引0是空字符串,因此也不必担心零索引。

解决方案 3:

import datetime

monthinteger = 4

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

print (month)

四月

解决方案 4:

如果您只需要知道给定数字(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

...

解决方案 5:

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

解决方案 6:

要一次打印所有月份:

 import datetime

 monthint = list(range(1,13))

 for X in monthint:
     month = datetime.date(1900, X , 1).strftime('%B')
     print(month)

解决方案 7:

如果您(像我一样)在 pandas 数据框中有一列月份数字,我会提供此信息:

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

解决方案 8:

一些好的 答案已经使用了日历,但尚未提及设置语言环境的效果。

日历根据当前语言环境设置月份名称,例如法语:

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() […]

解决方案 9:

datetime— 基本日期和时间类型 — Python 文档

所有 strftime 格式代码的列表。月份名称和诸如格式化左零填充之类的好东西。阅读整页以了解诸如“简单”参数的规则之类的内容。以下是简要列表:

%a  Sun, Mon, …, Sat 
%A  Sunday, Monday, …, Saturday 
%w  Weekday as number, where 0 is Sunday 
%d  Day of the month 01, 02, …, 31
%b  Jan, Feb, …, Dec
%B  January, February, …, December
%m  Month number as a zero-padded 01, 02, …, 12
%y  2 digit year zero-padded 00, 01, …, 99
%Y  4 digit Year 1970, 1988, 2001, 2013
%H  Hour (24-hour clock) zero-padded 00, 01, …, 23
%I  Hour (12-hour clock) zero-padded 01, 02, …, 12
%p  AM or PM.
%M  Minute zero-padded 00, 01, …, 59
%S  Second zero-padded 00, 01, …, 59
%f  Microsecond zero-padded 000000, 000001, …, 999999
%z  UTC offset in the form +HHMM or -HHMM   +0000, -0400, +1030
%Z  Time zone name  UTC, EST, CST
%j  Day of the year zero-padded 001, 002, …, 366
%U  Week number of the year zero padded, Days before the first Sunday are week 0
%W  Week number of the year (Monday as first day)
%c  Locale’s date and time representation. Tue Aug 16 21:30:00 1988
%x  Locale’s date representation. 08/16/1988 (en_US)
%X  Locale’s time representation. 21:30:00 
%%  literal '%' character.

解决方案 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

(这是我写这篇文章的真实日期)

解决方案 11:

‘01’ 至 ‘Jan’

from datetime import datetime

datetime.strptime('01', "%m").strftime("%b")    

解决方案 12:

您可以使用我的手动功能,而不必导入或下载新的库:

将代码复制到新的 .py 文件并运行

快速解释:

更改your_number并打印month_from_number,你将获得月份

    your_number = 10

    def num_to_month(*args, **kwargs):

        num = kwargs.get("num", None)

        if int(num) <= 12 and int(num) > 0:

            list_of_months = {'1': 'January', '2': 'February', '3': 'March',
                              '4': 'April', '5': 'May', '6': 'June', '7': 'July',
                              '8': 'August', '9': 'September', '10': 'October',
                              '11': 'November', '12': 'December'}

            return list_of_months[num]

        else:

            print('num_to_month function error: "num=' + str(num) + '"')

    month_from_num = num_to_month(num=your_number)

    print(month_from_num)

结果将是十月

解决方案 13:

对于任意范围的月份数字

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

将产生正确的列表。start从月份整数列表中一月的开始位置调整参数。

解决方案 14:

此脚本用于说明如何获取数据框中月份变量/列的日历月份缩写。请注意,假设月份列/变量的值都是数字,并且可能存在一些缺失值。

# 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']]

解决方案 15:

如果您只有月份数字而没有日期时间实例,您可以构建一个小函数来映射带有标签的数字,如下所示:

def monthname(m):
    d={1:'En',2:'Fe',3:'Mr',4:'Ab',5:'My',6:'Jn',7:'Jl',8:'Ag',9:'Se',10:'Oc',11:'No',12:'Di'}
    return d[m]

解决方案 16:

是从关于生成月份名称列表的相关 SO 问题来到这里。

关于这个问题的许多选项,就像这个一样,建议使用日历模块,尽管使用日期时间列表理解也可以实现相同的效果:

month_names = [dt.datetime.strptime(str(n), '%m').strftime('%B') for n in range(1, 13)]

如果您从查找大量整数的月份名称的角度来解决这个问题,那么索引预先生成的列表可能会提高效率。

解决方案 17:

import datetime as dt

df['month_name'] = df['month'].dt.month_name()

这也许也有帮助。

如果你想最后三个字母。

df['month_name'] = df['month'].dt.month_name().str.slice(stop= 3)

解决方案 18:

我创建了自己的函数,将数字转换为相应的月份。

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
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用