Pythonの日付操作モジュールとは?datetimeの基本からdateutilまで解説
Pythonの日付操作に使える標準モジュール「datetime」とは
Pythonには、日付や時刻の解析・フォーマット・演算(加減算)を行うための関数やクラスが含まれた組み込みモジュール「datetime」が用意されています。
時刻はtimeクラスで表現され、「時(hour)」「分(minute)」「秒(second)」「マイクロ秒(microsecond)」の属性を持ちます。さらに、タイムゾーン情報を含めることも可能です。
timeクラスの使用例
import datetime
t = datetime.time(1, 2, 3)
print(t)
print('hour :', t.hour)
print('minute :', t.minute)
print('second :', t.second)
print('microsecond:', t.microsecond)
print('tzinfo :', t.tzinfo)
実行結果
$ python datetime_time.py 01:02:03 hour : 1 minute : 2 second : 3 microsecond: 0 tzinfo : None
timeインスタンスが保持しているのは時刻のみであり、それに関連付けられた日付情報は持ちません。日付を扱いたい場合は、次に紹介するdateクラスを使用します。
dateクラスで今日の日付を取得する
カレンダー上の日付はdateクラスで表現されます。インスタンスは「年(year)」「月(month)」「日(day)」の属性を持ちます。today()クラスメソッドを使えば、今日の日付を表すdateオブジェクトを簡単に生成できます。
dateクラスの使用例
import datetime
today = datetime.date.today()
print(today)
print('ctime :', today.ctime())
print('tuple :', today.timetuple())
print('ordinal :', today.toordinal())
print('Year :', today.year)
print('Month :', today.month)
print('Day :', today.day)
実行結果
2017-09-07 ctime : Thu Sep 7 00:00:00 2017 tuple : time.struct_time(tm_year=2017, tm_mon=9, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=250, tm_isdst=-1) ordinal : 736579 Year : 2017 Month : 9 Day : 7
より高度な日付処理には「dateutil」がおすすめ
標準のdatetimeモジュールはあくまで基本的な機能にとどまります。より高度な処理が必要な場合は、サードパーティ製ライブラリのdateutilを導入するとよいでしょう。以下のコマンドでインストールできます。
pip install python-dateutil
dateutilを活用すると、次のような便利な機能が使えるようになります。
- 相対的な差分(relativedelta)の計算:「来月」「来年」「来週の月曜」「月末」などを簡単に求められる
- 2つの日付やdatetimeオブジェクト間の差分の計算
- さまざまな形式の日付文字列の柔軟な解析(parser.parse)
- タイムゾーンの扱いの簡素化(tzモジュール)
日常的な開発では「日付の加減算」や「月末・翌月の取得」といった処理が必要になる場面が多いため、標準のdatetimeモジュールと併せてdateutilも覚えておくと、Pythonでの日付操作がぐっと楽になります。
-
プログラマー必見!Python開発に役立つ実用的なヒントとコツ集
本記事では、競技プログラミングや業務でのコーディングに役立つ、実用的なPythonのテクニックをご紹介します。これらのコツを活用すれば、コード量を削減しながら実行効率を最適化でき、より簡潔で読みやすいプログラムを書けるようになります。1. 2つの変数の値をその場で入れ替える(スワップ)一時変数を使わずに、タプルのアンパックを利用して値を交換できます。これはPythonらしい書き方の代表例です。x, y = 50, 70 print(x, y) # 値の入れ替え x, y = y, x print(x, y)出力結果50 70 70 502. リストから1つの文字列を作成するjoin()メソッ
-
競技プログラミングでPythonが選ばれる理由とは?初心者にもわかる5つのメリット
競技プログラミングとは、適切なデータ構造を選択し、効率的なアルゴリズムを実装することで課題を解決するコーディング活動のことです。プログラマーの思考力や実装力が多角的に試される場となっています。 競技では、出題された仮想的なプログラミング問題に対して、さまざまなロジックを駆使して解法を見つけ出す必要があります。さらに重要なのは、単に正解を出すだけでなく、時間計算量・空間計算量の両面で優れた「効率的な」解法を導くことです。 競技プログラミングの問題文の一例を挙げてみましょう。 【問題例】 長さnの文字列sが与えられます。sは小文字のラテン文字のみで構成されています。 部分文字列とは、元の文字列から