番号から月の名前を取得


230

月番号から月の名前を取得するにはどうすればよいですか?

たとえば、私が持っている場合、私は3戻りたいですmarch

date.tm_month()

文字列を取得する方法はmarch

回答:


269

カレンダーAPI

それから、calendar.month_name[3]が返されMarch、の配列インデックスが0空の文字列であることを確認できるので、ゼロインデックスについて心配する必要もありません。


35
また、短い月の名前にcalendar.month_abbr [i]を使用することもできます(例:3月
Jay Sheth

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

返品:12月

Python doc Webサイトの詳細


[編集:@GiriBからのすばらしいコメント] %b月名の短い表記を返すを使用することもできます。

mydate.strftime("%b")

上記の例では、を返しDecます。


7
現在の日付は関係ないため、特定の番号(1〜12)の月の名前だけを知る必要がある場合、これはそれほど役に立ちません。ここでは、calendar.month_name [i]またはcalendar.month_abbr [i]の方が便利です。
Jay Sheth

11
mydate.strftime("%b")月名の短い表記を返します。(上記の例では、返されますDec
GiriB 2017年

3
OPは、datetime.datetimeオブジェクトではなく整数を入力として使用します。mydate= datetime.datetime(2019、integer、1、0、0)を使用できますが、かなり醜い
Rutger Hofste

これがどのように質問に答えるかはわかりません。
cglacet


35

現在の日付は関係ないため、特定の番号(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_namemonth_abbr
JMax

これは役に立ちますrange(1, 13)。出力で12か月すべてを取得できるように、例で使用することをお勧めします。
davejagoda

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

10

(私と同じように)データフレームに月番号の列がある場合に備えて、これを提供します。

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

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

(これを書いたとき、これは本当の日付でした)


3

いくつかの良い 答えはすでにカレンダーを利用していますが、ロケールの設定の効果はまだ言及されていません。

たとえば、フランス語では:

import locale
import calendar

locale.setlocale(locale.LC_ALL, 'fr_FR')

assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'

setlocaleコードでの使用を計画している場合は、ドキュメントのヒントと警告、および拡張ライターのセクションを必ずお読みください。ここに示されている例は、それがどのように使用されるべきかを表すものではありません。特に、次の2つのセクションから:

副作用としてプログラム全体に影響を与えるため、一般に、一部のライブラリルーチンでsetlocale()を呼び出すことはお勧めしません[…]

拡張モジュールはsetlocale()を呼び出すべきではありません[…]


1
さらに、フォールバックカルチャを追加するか、setLocale呼び出しをtry / exceptでラップすることをお勧めします。そのカルチャが使用できない場合、例外が発生するためです(これを試した後、私にのみ起こります;))
firepol

ロケールの設定はおそらくそのコードの近くで行うことではないため、コードはそのままにしておくと思います。ロケールの設定がからの値にどのように影響するかを強調したかっただけcalendarです。テキストを更新できます。
cglacet

1

月数のarbitaray範囲の場合

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

正しいリストが生成されます。start1月が始まる月の整数リストから、-parameterを調整します。


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 2番目にゼロが埋め込まれた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日(en_US)

%Xロケールの時間表現。21:30:00

%%リテラル '%'文字。


-6

数値を対応する月に変換する独自の関数を作成しました。

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

3
他の回答に示されているように、この機能は組み込みcalendarモジュールにすでに存在しています。同じ結果を複製する独自の関数を作成することにはどのような利点がありますか?また、辞書は一連のelifステートメントよりもはるかに高速です。
トム

4
他のすべての問題とは別に、関数は英語ロケールでのみ機能します
mick88
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.