Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのcalendarモジュールでカレンダーを自由に操作する方法

Pythonには、カレンダーや日付に関する処理をまとめて扱うための標準モジュール calendar が用意されています。このモジュールには豊富な組み込み関数が含まれており、年間カレンダーの表示から特定月の取得、月の日数計算、うるう年の判定まで、さまざまな処理を簡単なコードで実現できます。ここでは、calendar モジュールの代表的な使い方を具体例とともに解説します。

1年分のカレンダーを表示する

calendar.calendar(年) を使うと、指定した年の1年分のカレンダー全体をテキスト形式で出力できます。

サンプルコード

import calendar
print(calendar.calendar(2019))

実行結果

上記のコードを実行すると、2019年のカレンダーが次のように表示されます。

                              2019

      January                  February                  March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                   1  2  3                   1  2  3
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
28 29 30 31               25 26 27 28               25 26 27 28 29 30 31

       April                     May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                1  2  3  4  5                      1  2
 8  9 10 11 12 13 14       6  7  8  9 10 11 12       3  4  5  6  7  8  9
15 16 17 18 19 20 21      13 14 15 16 17 18 19      10 11 12 13 14 15 16
22 23 24 25 26 27 28      20 21 22 23 24 25 26      17 18 19 20 21 22 23
29 30                     27 28 29 30 31            24 25 26 27 28 29 30

        July                    August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                1  2  3  4                         1
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       2  3  4  5  6  7  8
15 16 17 18 19 20 21      12 13 14 15 16 17 18       9 10 11 12 13 14 15
22 23 24 25 26 27 28      19 20 21 22 23 24 25      16 17 18 19 20 21 22
29 30 31                  26 27 28 29 30 31         23 24 25 26 27 28 29 30

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4  5  6                   1  2  3                            1
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29 30 31

特定の月だけを表示する

1年全体ではなく特定の月だけが必要な場合は、calendar.month(年, 月) 関数に引数を渡すことで、その月のカレンダーのみを取得できます。

サンプルコード

import calendar
print(calendar.month(2019, 7))

実行結果

     July 2019
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

月の日数と最初の曜日を調べる

monthrange() 関数を使うと、指定した月の日数だけでなく、その月の初日の曜日も同時に取得できます。戻り値はタプルになっており、1つ目の要素が初日の曜日番号(月曜日が0、日曜日が6)、2つ目の要素がその月の日数です。

以下の例では、2019年2月の日数と、2月1日の曜日番号を求めています。

サンプルコード

import calendar
print(calendar.monthrange(2019, 2))

実行結果

(4, 28)

この結果は「初日の曜日が金曜日(4)」で「2月は28日まで(28)」であることを意味します。

うるう年を判定・集計する

isleap() 関数を使えば、ある年がうるう年かどうかを真偽値(True / False)で判定できます。また、leapdays() 関数を使うと、指定した期間内に何回のうるう年があるかを数えることも可能です。

次の例では、2019年と2020年がそれぞれうるう年かどうかを判定し、さらに2000年から2020年までの間に含まれるうるう年の回数を求めています。

サンプルコード

import calendar
print(calendar.isleap(2019))
print(calendar.isleap(2020))
print(calendar.leapdays(2000, 2020))

実行結果

False
True
5

2019年は平年のため False、2020年はうるう年のため True が出力され、2000年〜2020年の期間にはうるう年が5回含まれていることがわかります。

まとめ

calendar モジュールを使えば、外部ライブラリを追加することなく、Pythonの標準機能だけでカレンダー関連の処理を完結できます。年単位・月単位のカレンダー表示、月の日数の取得、うるう年の判定など、実務でも役立つ機能が揃っているので、日付を扱うプログラムを書く際の強力な味方になるでしょう。

  1. Pythonでカレンダーを作る方法!calendarモジュールの基本と使い方を解説

    Pythonには、カレンダーを扱うためのcalendarという標準モジュールが組み込まれています。この記事では、calendarモジュールの基本的な使い方について解説していきます。calendarモジュールでは、1週間は月曜日から始まり日曜日に終わります。また、このモジュールはグレゴリオ暦(西暦)に準拠しています。それでは、calendarモジュールの便利なメソッドをいくつか見ていきましょう。年間カレンダーを取得する特定の年のカレンダー全体を取得したい場合は、calendar.calendar(year)クラスのインスタンスを作成し、それを出力します。以下に具体例を示します。コード例# cal

  2. 【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説

    はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが