Python

Pythonで日付を扱うには?

Pythonで日付を扱うには?
Pythonで日付データを扱う処理を書くことになりました。
「Google Apps Script」や「JavaScript」なら、Day.jsライブラリが便利です。
じゃあ、Pythonなら?
便利なモジュールが標準ライブラリに用意されているので、その使い方をまとめました。

 

日付を扱うライブラリは?

標準ライブラリ「datetime」です。
まずはインポートしましょう。

import datetime

 

datetimeの使い方は?

ライブラリ名の後にデータ型を指定し、必要に応じて関数を書きます。
例えば、今日の日付を取得するコードは次の通り。

import datetime
 
print(datetime.date.today())
# ⇒ 2021-11-01
 
print(datetime.datetime.today())
# ⇒ 2021-11-01 23:18:31.382556

同じtoday()を使っても、データ型によって出力が変わります。

  • .date:日付の年月日のみ
  • .datetime:日付(年月日)に加え、時刻(時分秒ミリ秒)も含む
  • .time:時刻のみ

データ型によって、使えるもの、使えないものがあります。
例に挙げたtoday()は、「.date」や「.datetime」には使えるものの「.time」には使えません。
似たような関数に「now()」がありますが、これは「.datetime」だけで使えます。
このように、データ型によって関数を使い分けることになりますので、基本を押さえておきましょう。

 

具体的なコードの書き方は?

今日の日付を取得する

datetime.date.today()

現在の時刻を取得する(日付を含む)

datetime.datetime.today()
datetime.datetime.now()でも良い

日付を取得する

年を取得
datetime.date.today().year

月を取得
datetime.date.today().month

日を取得
datetime.date.today().day

曜日を取得(戻り値は0 ~ 6、0は月曜日)
datetime.date.today().weekday()

年月日を取得
datetime.datetime.today().date()

時刻を取得する

時を取得(戻り値は0 ~ 23)
datetime.date.today().hour

分を取得
datetime.date.today().minute

秒を取得
datetime.date.today().second

時分秒ミリ秒を取得
datetime.datetime.today().time()

日付情報を指定する

数字で指定する
datetime.date(年,月,日)
※引数の省略は不可。

文字列で指定する
datetime.date.fromisoformat('2021-11-1')

時刻情報を指定する(日付を含む)

数字で指定する
datetime.datetime(年,月,日,時,分,秒,ミリ秒,タイムゾーン)
※年月日の引数は省略不可。時刻の指定を省略すると「0」になる。

文字列で指定する
datetime.datetime.fromisoformat('2021-11-01 23:00:00')

※月日は2桁で指定しないとエラーになる。日付と時刻の間はスペースや「T」に限らず、1文字入っていればなんでも良い。

時刻情報のみを指定する(日付を含まない)

数字で指定する
datetime.time(時,分,秒,ミリ秒,タイムゾーン)
※引数を省略すると「0」になる。

文字列で指定する
datetime.time.fromisoformat('23:00:00')

※時分秒は2桁で指定しないとエラーになる。

日付の加減

「.timedelta()」を使って差分を作成、それを足したり引いたりする。
1日後
datetime.date.today() + datetime.timedelta(days=1)

2週間前
datetime.date.today() - datetime.timedelta(weeks=2)

3時間後
datetime.datetime.today() + datetime.timedelta(hours=3)

4分前
datetime.datetime.today() - datetime.timedelta(minutes=4)

5秒後
datetime.datetime.today() + datetime.timedelta(seconds=5)

「.timedelta()」の引数は複数可。1時間半を作るには「datetime.timedelta(hours=1,minutes=30)」とする。

その他のメソッドや詳しい解説は、公式ドキュメントをご覧ください。

 

まとめ

Pythonで日付を扱うには、標準ライブラリ「datetime」が便利です。
年単位や月単位での加減算はできませんが、日付に関する処理の大部分がこれでカバーできるのではないでしょうか。
とてもいい勉強になりました。

-Python
-, , , , , , , , , , , , ,