【Python】datetimeで日付や時間を取得して操作する!サンプルコード付き!
日付や時刻を操作するにはdatetimeを使用します。
日付や時刻はシステムやさまざまなアプリケーションで使用することが多く、Pythonでは日付を取得するためのdatetimeモジュールが準備されています。
例えば、webアプリでは現在日時が予約時間よりも過ぎていたら、予約のボタンを押せなくする場合にdatetimeを使って現在日時を取得します。
このように日付や時間を使って処理を行うことは現場では多々ありますので、基本的な使い方は学んでおきましょう。
今回はdatetimeのモジュールを使って以下の内容について解説します。
・日時を取得する方法
・日付同士を計算する方法
・日付のフォーマットを変更する方法
・datetime型を文字列型に変換する方法
・文字列型をdatetime型に変換する方法
目次
datetimeとは
datetimeとは日付や時刻を取得し、その取得した値に対して様々な操作をすることができます。
しかし、datetimeはメソッドや型ではなくモジュールであるため、インポートとする必要があります。
摩耶、datetimeモジュールには、日付や時刻を扱うためのクラスが用意されています。
datetimeの書き方
datetimeの構文は下記となります。
1 2 3 |
import datetime 変数名 = datetime.date.メソッド() |
datetimeをインポートすることで、datetimeを使用することができます。
datetimeを使ったサンプルコード
例
1 2 3 4 |
import datetime date = datetime.date.today() print(date) |
出力結果
2020-07-21
datetimeの基本的な使い方
datetimeの基本的な使い方をサンプルコードを使って紹介します。
現在の日付を取得する
現在の日付や時刻を取得するには、date.today()を使用します。
例
1 2 3 4 5 |
import datetime date = datetime.date.today() print("今日の日付:", date) |
出力結果
今日の日付: 2020-07-21
現在の日付と時刻を取得する
現在の日付と時刻を取得するには、datetime.now()を使用します。
例1
1 2 3 4 5 |
import datetime date = datetime.datetime.now() print("今の時刻:", date) |
出力結果
今の時刻: 2020-07-21 06:18:37.799619
また、「年月日時分秒」を個々で取得したい場合は以下のように取得したい単位を指定します。
例2
1 2 3 4 5 6 7 8 9 10 11 |
import datetime date = datetime.datetime.now() print("年:",date.year) print("月:",date.month) print("日:",date.day) print("時:",date.hour) print("分:",date.minute) print("秒:",date.second) print("マイクロ秒:",date.microsecond) |
出力結果
年: 2020
月: 7
日: 21
時: 6
分: 25
秒: 33
マイクロ秒: 84016
日付の計算をする
日付の計算をするには、datetime.timedelta()を使用します。
datetime.timedelta()を使用することで取得した日付の足し算や引き算が出来るようになります。
例1
1 2 3 4 5 6 7 8 9 |
import datetime today = datetime.date.today() today_plus_5= datetime.timedelta(days = 5) print(today_plus_5) today_minus_5= datetime.timedelta(days = -5) print(today_minus_5) |
出力結果
5 days, 0:00:00
-5 days, 0:00:00
この場合、計算した値をそのまま出力すると計算する値を出力してしまい、日付が出力されません。
計算した日付を出力したい場合は下記のように修正します。
例2
1 2 3 4 5 6 7 8 9 |
import datetime today = datetime.date.today() today_plus_5= datetime.timedelta(days = 5) print(today + today_plus_5) today_minus_5= datetime.timedelta(days = -5) print(today + today_minus_5) |
出力結果
2020-07-26
2020-07-16
計算する日付に+演算子を書くことで計算した結果の日付を出力することができます。
今回は今の日付から+5された日付、-5された日付が出力されています。
datetimeの実践的な使い方
datetimeの実践的な使い方を紹介していきます。
日付のフォーマットを変更する
日付のフォーマットを変更するには、format()を使用します。
datetimeは、上記で紹介したサンプルコードのように「西暦-月-日」や「西暦-月-日 時:分:秒:ミリ秒」というフォーマットで結果を表示しています。
システムやサービスの仕様によっては「2020年07月21日」のように別のフォーマットで表示したい場合もあります。
しかし、format()を使用することで表示したいフォーマットを設定することができます。
例
1 2 3 4 5 6 7 |
import datetime today= datetime.date.today() today_for = "{0:%Y年%m月%d日}".format(today) print(today) print(today_for) |
出力結果
2020-07-21
2020年07月21日
datetime型を文字列型に変換する
datetime型を文字列型に変換するにはstrtime()を使用します。
例
1 2 3 4 5 6 7 8 |
import datetime today = datetime.datetime.now() today_str = today.strftime('%Y/%m/%d %H:%M:%S') print(today, type(today)) print(today_str, type(today_str)) |
出力結果
2020-07-21 07:17:56.020784
2020/07/21 07:17:56
クラスが’datetime.datetime’からstr’へ変更されました。
文字列型をdatetime型に変換する
文字列型からdatetime型に変換するにもstrftime()を使用します。
しかし、strftime()の第二引数に出力するフォーマットを指定する必要があります。
例
1 2 3 4 5 6 7 8 |
import datetime oneday = '2020-07-14 11:22:14' oneday_dt = datetime.datetime.strptime(oneday, '%Y-%m-%d %H:%M:%S') print(oneday, type(oneday)) print(oneday_dt, type(oneday_dt)) |
出力結果
2020-07-14 11:22:14
2020-07-14 11:22:14
クラスが’str’から’datetime.datetime’へ変更されました。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。