Python

【TIPS】Pythonで日付/日時/時刻の取得・演算を行うdatetimeサンプルコード付き

 

エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。

 

普段はフリーランスでシステムエンジニアをしております。

 

今回は、Pythonのdatetimeライブラリで日付/日時/時刻の取得や演算を行う方法をまとめてみました。

 

なお、本記事内のPythonソースコードは、Visual Studio Code (VS Code)で動作を確認しています。

 

同様に動作確認したい方はこちらの記事も参照し、まずはVS Codeの環境構築をおこなうとよいでしょう。

 

 

Pythonライブラリ(time, datetime)で日付・日時・時刻を扱う

 

Pythonで日付・日時・時刻を扱うには、標準ライブラリのtimeかdatetimeを使います。

 

標準ライブラリのtimeは、UNIX時間(エポック秒)でfloat型で取得したい場合に使います。

 

標準ライブラリのdatetimeは、日時(日付と時刻)を表すdatetimeオブジェクト、dateオブジェクト、timeオブジェクトとして扱いたい場合に使います。

 

各オブジェクトについては、後述しています。

 

 

datetime使い方【基本編】(サンプルコード付き)

 

標準ライブラリdatetimeの基本的な使い方をサンプルコード付きで解説していきます。

 

datetimeが扱うオブジェクトの種類

 

datetimeを使いこなすためにdatetimeが扱っているオブジェクトの種類を紹介します。

 

datetimeオブジェクト

 

datetimeのdatetimeオブジェクトは、日付(年、月、日)と時刻(時、分、秒、マイクロ秒)の両方の情報を持つオブジェクトです。

 

日付や時刻の各情報は、属性year, month, day, hour, minute, second, microsecondでアクセスすることができます。

 

dateオブジェクト

 

datetimeのdateオブジェクトは、日付(年、月、日)の情報を持つオブジェクトです。

 

日付情報は、属性year, month, dayでアクセスすることができます。

 

timeオブジェクト

 

datetimeのtimeオブジェクトは、時刻(時、分、秒、マイクロ秒)の情報を持つオブジェクトです。

 

時刻情報は、属性hour, minute, second, microsecondでアクセスできます。

 

timedeltaオブジェクト

 

datetimeオブジェクトやdateオブジェクト同士の演算結果として生成されるオブジェクトです。

 

 

日付・日時・時刻を扱うPythonのdatetimeの宣言方法

 

datetimeを使うためには、以下のように「import datetime」を宣言する必要があります。

 

 

現在の日付を取得(date.today())

 

現在の日付を取得するには、以下のようにdatetimeライブラリのdateオブジェクトのtoday()メソッドを使用します。

 

 

データ型を確認すると、「datetime.date」クラスのオブジェクトであることがわかります。

 

現在の日時を取得(datetime.now() / datetime.today())

 

現在の日時・時刻を取得するには、以下のようにdatetimeライブラリのdatetimeオブジェクトのnow()メソッド、またはtoday()メソッドを使用します。

 

 

データ型を確認すると、「datetime.datetime」クラスのオブジェクトであることがわかります。

 

指定の日付を取得(datetime.date(YYYY, MM, DD))

 

指定の日付を取得するには、datetimeのdateメソッドの引数に年、月、日を指定します。

 

 

データ型を確認すると、「datetime.date」クラスのオブジェクトであることがわかります。

 

指定の日時を取得(datetime.datetime(YYYY, MM, DD, hh, mm, ss, ms))

 

datetimeのdatetimeメソッドの引数に年、月、日、時、分、秒、マイクロ秒を指定することで、指定の日時を取得することができます。

 

 

データ型を確認すると、「datetime.datetime」クラスのオブジェクトであることがわかります。

 

年・月・日・時・分・秒・マイクロ秒を取得

 

年・月・日・時・分・秒・マイクロ秒を取得するには、属性year, month, day, hour, minute, second, microsecondでアクセスすることができます。

 

 

 

曜日を取得(datetime.date(YYYY, MM, DD).weekday())

 

曜日を取得するには、以下のようにweekdayメソッドを使います。

 

 

weekdayメソッドは、各曜日に対応する整数を返します。

 

 

上記サンプルコードでは、2021年7月17日が土曜日(5)であることを示しています。

 

 

日付情報をタプル形式で取得(timetuple())

 

日付情報をタプル形式で取得するには、以下のようにtimetupleメソッドを使います。

 

 

time.struct_timeというクラスで返却され、日付情報の各属性を取得できます。

 

各属性の意味は、以下の通りです。

 

 

 

日付のみ取得(date())

 

日付情報のみを取得するには、以下のようにdateメソッドを使います。

 

 

 

時間のみ取得(time())

 

時間情報のみを取得するには、以下のようにtimeメソッドを使います。

 

 

 

 

datetime使い方【実践編】(サンプルコード付き)

 

標準ライブラリdatetimeの実践的な使い方をサンプルコード付きで解説していきます。

 

datetimeで日付の演算(足し算・引き算)

 

datetimeで日付の足し算や引き算をするには、relativedeltaメソッドを使うと便利です。

 

 

relativedeltaメソッドを使うと、1年後の日付や1ヶ月前の日付など簡単に計算することができます。

 

datetimeで日時の比較

 

datetime.datetimeクラスのオブジェクト同士で日時の比較を行うことができます。

 

 

 

datetimeで日付のフォーマット変換

 

日付情報のフォーマット変換方法について紹介します。

 

文字列→日付型(strptimeメソッド)

 

datetimeのstrptimeメソッドを使うと、日付や時刻を表す文字列からdatetimeオブジェクトの日付型に変換できます。

 

 

strptimeメソッドの第二引数には、元の文字列に対応する書式化文字列を指定する必要があります。

 

書式化文字列には、以下のような種類があります。

 

 

日付型→文字列(strftimeメソッド)

 

datetimeのstrftimeメソッドを使うと、datetimeオブジェクトの日付型から日付や時刻を表す文字列に変換できます。

 

 

strftimeメソッドの引数に文字列フォーマットを指定することで、任意の文字列フォーマットに変換できます。

 

日付型→文字列(isoformatメソッド)

 

datetimeのisoformatメソッドを使うと、datetimeオブジェクトの日付型からISOフォーマットの文字列に変換できます。

 

 

 

pytzタイムゾーンの設定

 

タイムゾーンを設定する場合は、datetime.nowメソッドの引数にタイムゾーンを指定します。

 

 

 

まとめ

 

いかがでしたでしょうか。

 

Pythonの標準ライブラリdatetimeで日付/日時/時刻の取得や演算を行う方法を紹介してきました。

 

日付を表す文字列から日付型への変換や、日付型から文字列への変換もよく使うので、ぜひこの機会に覚えて頂ければ業務に役立つこと間違いありません。

 

 

【関連記事】

【TIPS】PythonでのCSVファイル読み込み、書き込み操作まとめ

【TIPS】データ分析ならコレ!Python Pandas使い方まとめ(DataFrame編)