【Python】datetimeで日付や時間を取得して操作する!サンプルコード付き!

日付や時刻を操作するにはdatetimeを使用します。
日付や時刻はシステムやさまざまなアプリケーションで使用することが多く、Pythonでは日付を取得するためのdatetimeモジュールが準備されています。

例えば、webアプリでは現在日時が予約時間よりも過ぎていたら、予約のボタンを押せなくする場合にdatetimeを使って現在日時を取得します。

このように日付や時間を使って処理を行うことは現場では多々ありますので、基本的な使い方は学んでおきましょう。

今回はdatetimeのモジュールを使って以下の内容について解説します。
日時を取得する方法
日付同士を計算する方法
日付のフォーマットを変更する方法
datetime型を文字列型に変換する方法
文字列型をdatetime型に変換する方法

datetimeとは

datetimeとは日付や時刻を取得し、その取得した値に対して様々な操作をすることができます。
しかし、datetimeはメソッドや型ではなくモジュールであるため、インポートとする必要があります。
摩耶、datetimeモジュールには、日付や時刻を扱うためのクラスが用意されています。

datetimeの書き方

datetimeの構文は下記となります。

datetimeをインポートすることで、datetimeを使用することができます。

datetimeを使ったサンプルコード

出力結果

2020-07-21

datetimeの基本的な使い方

datetimeの基本的な使い方をサンプルコードを使って紹介します。

現在の日付を取得する

現在の日付や時刻を取得するには、date.today()を使用します。

出力結果

今日の日付: 2020-07-21

現在の日付と時刻を取得する

現在の日付と時刻を取得するには、datetime.now()を使用します。

例1

出力結果

今の時刻: 2020-07-21 06:18:37.799619

また、「年月日時分秒」を個々で取得したい場合は以下のように取得したい単位を指定します。

例2

出力結果

年: 2020
月: 7
日: 21
時: 6
分: 25
秒: 33
マイクロ秒: 84016

日付の計算をする

日付の計算をするには、datetime.timedelta()を使用します。
datetime.timedelta()を使用することで取得した日付の足し算や引き算が出来るようになります。

例1

出力結果

5 days, 0:00:00
-5 days, 0:00:00

この場合、計算した値をそのまま出力すると計算する値を出力してしまい、日付が出力されません。
計算した日付を出力したい場合は下記のように修正します。

例2

出力結果

2020-07-26
2020-07-16

計算する日付に+演算子を書くことで計算した結果の日付を出力することができます。
今回は今の日付から+5された日付、-5された日付が出力されています。

datetimeの実践的な使い方

datetimeの実践的な使い方を紹介していきます。

日付のフォーマットを変更する

日付のフォーマットを変更するには、format()を使用します。
datetimeは、上記で紹介したサンプルコードのように「西暦-月-日」や「西暦-月-日 時:分:秒:ミリ秒」というフォーマットで結果を表示しています。
システムやサービスの仕様によっては「2020年07月21日」のように別のフォーマットで表示したい場合もあります。
しかし、format()を使用することで表示したいフォーマットを設定することができます。

出力結果

2020-07-21
2020年07月21日

datetime型を文字列型に変換する

datetime型を文字列型に変換するにはstrtime()を使用します。

出力結果

2020-07-21 07:17:56.020784
2020/07/21 07:17:56

クラスが’datetime.datetime’からstr’へ変更されました。

文字列型をdatetime型に変換する

文字列型からdatetime型に変換するにもstrftime()を使用します。
しかし、strftime()の第二引数に出力するフォーマットを指定する必要があります。

出力結果

2020-07-14 11:22:14
2020-07-14 11:22:14

クラスが’str’から’datetime.datetime’へ変更されました。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し