Pythonの日付の基本と応用を初心者にもわかりやすく解説!
pythonでシステムを作る際に日付を扱うことは多いです。
例えば病院のシステムであれば、予約の日時を取る為や診療録としての日付の登録などです。
身近なところでは、最近流行りのInstagramなどでも「投稿した日時」が使わています。
今回はPythonの日付操作の基本から応用までを徹底解説していきます。
Pythonの日付の基本について
日付の基本から解説していきます。
まずはPythonで日付操作をする為の準備として、datetimeの学習を始めていきます。
datetimeについて
datetimeはPythonモジュールの1つで、日付や時刻などに特化したモジュールです。
Pythonの実行環境さえ整っていれば、別途何かを準備する必要はありません。
datetimeの使用例
datetimeの具体的な使用例について、解説していきます。
まずdatetimeを利用する為に、下記コードを最初に記述する必要があります。
[py]import datetime
[/py]
datetimeを利用する準備はこれで完了です。
日付の取得方法
datetime基本中の基本の日付取得方法について、解説していきます。
日付は現在の日付だけでなく、年・月・日・時・分・秒など個別に取得することも出来ます。
具体的な記述方法は、下記になります。
#datetimeのインポート
import datetime
#現在の日時取得
ima = datetime.datetime.now()
print(ima)
#現在の年取得
nen = ima.year
print(nen)
#現在の月取得
tuki = ima.month
print(tuki)
#現在の日取得
hi = ima.day
print(hi)
#現在の時取得
zi = ima.hour
print(zi)
#現在の分取得
fun = ima.minute
print(fun)
#現在の秒取得
byou = ima.second
print(byou)
#現在のマイクロ秒取得
mbyou = ima.microsecond
print(mbyou)
#実行結果
2018-06-09 20:44:54.843275
2018
6
9
20
44
54
843275
[/py]
システムのログなどの場合は、「datetime.datetime.now()」で現在の日時取得を行い、後は必要に応じて年・月・日・時間を取得して利用します。
基本的には秒まで利用することが多いですが、マイクロ秒まで利用することもある為、可能であればこの機会に習得することをおすすめします。
日付の曜日取得方法
日付の取得で既に気になられている方も多いと思いますが、日付とセットで重要なのが曜日です。
日付と同様にシステムを開発する際に、曜日毎の処理を仕様に入れることは、決して少なくはありません。
曜日の取得方法は、下記になります。
[py]#datetimeのインポート
import datetime
#現在の日時取得
ima = datetime.datetime.now()
#曜日取得
youbi = ima.weekday()
print(youbi)
#実行結果
5
[/py]
実行結果では、曜日は「5」と出力されています。
これでは意味がわかりませんよね。
Pythonの実行環境がある方は、1度上記ソースコードをコピーして、実行してみて頂ければわかると思いますが、結果は0~6の数字が出力されます。
weekday()は、月曜日が0で始まり日曜日が6で終わります。
つもり、上記ソースコードは5なので土曜日に実行していることになります。
日本語や英語として出力する場合は、if分などで戻り値から出力する必要があります。
もちろん曜日を出力する必要がなければ、該当する戻り値から処理を記述すれば問題ありません。
日付加算の使用例
それでは実際に日付加算の使用例について、ご紹介していきます。
[py] #datetimeのインポートimport datetime
#現在の日時取得
ima = datetime.datetime.now()
#10日後
toukago = ima + datetime.timedelta(days=10)
print(toukago)
#3日前
mikkamae = ima – datetime.timedelta(days=3)
print(mikkamae)
#実行結果
2018-06-19 20:44:54.843275
2018-06-06 20:44:54.843275
上記以外にも1週間単位や時間単位も引数を変更することで、加算減算することが可能です。
日付差分について
日付差分について 実際にシステム開発を行う場合、必ずしも現在の日付を中心にしないことも少なくありません。
例えば特定の日から特定の日までの日付差分です。
当然Pythonでも日付差分を出すことは簡単に抽出することが出来ます。
日付差分を抽出する記述方法は、下記になります。
[py] (比較する日付-比較する日付).days [/py]前部分の比較する日付の方が大きい日付にするのが重要です。
日付差分の使用例
日付差分の使用例は、下記になります。
[py]import datetime
hikaku1 = datetime.date(2018, 1, 1)
hikaku2 = datetime.date(2018, 6, 9)
result = (hikaku2-hikaku1).days
print(result)
#実行結果
159
[/py]
実行結果として159と出力されます。
単位としては日付で、比較開始日の当日が含まれていない為、必要に応じて1日追加するか開始日を前日からに設定するのがおすすめです。
日付の比較について
日付差分と同様に比較演算子を利用して、日付同士の比較をすることも可能です。
日付の比較記述方法は、下記になります。
[py]比較する日付 比較演算子 比較する日付
[/py]
日付比較の使用例
日付比較の使用例は、下記になります。
[py]import datetime
hikaku1 = datetime.date(2018, 1, 1)
hikaku2 = datetime.date(2018, 6, 9)
#比較する日付同士が等しい
result1 = hikaku1 == hikaku2
print(result1)
#比較する日付同士が等しくない
result2 = hikaku1 != hikaku2
print(result2)
#hikaku1がhikaku2より大きい
result3 = hikaku1 > hikaku2
print(result3)
#実行結果
False
True
False
比較演算子ですので、判定としてTrueとFalse出力されています。
実際にシステムを作る際は、日付の比較はif文の制御などで利用します。
未経験でも確実にプログラミングスキルを身につけられる!
【DMM WEBCAMP】では、専属コーチが卒業まで伴走します!
✔短期間で効率的にプログラミングスキルを身につけたい
✔プログラミングを独学で進めていくのが不安
✔家での時間を有効に使ってスキルアップがしたい
といった方におすすめです!
\実践的なスキルが身に付くカリキュラム/
Pythonの繰り返しの日付処理について
日付の繰り返し処理について、解説していきます。
日付ループの基本について
日付のループ処理の基本についてですが、特別な記述方法があるのではなく、ここまでで解説している日付取得や日付比較を応用して繰り返し処理をすることになります。 日付のループ処理としてよく利用されるものを使用例に記載しておきます。
日付ループの使用例
それでは日付ループでよく使用される例は、下記になります。[py]
#datetimeのインポート
import datetime
hi = datetime.date(2018, 1, 1)
for x in range(10):
print(hi)
hi = hi + datetime.timedelta(days=1)
#実行結果
2018-01-01
2018-01-02
2018-01-03
2018-01-04
2018-01-05
2018-01-06
2018-01-07
2018-01-08
2018-01-09
[/py]
非常にシンプルな内容ですが、for文と日付型のデータの使用例です。
しかしシンプルだからこそ、日付の繰り返し処理の多くは、これに近い形で実装できる物も少なくありません。
文字列のままでは1日追加した時点でエラーになりますが、文字列から日付型へのフォーマットが出来ていることにより、1日追加された日付が出力されています。
【DMM WEBCAMP】は受講生の97%が未経験からのスタート!
充実のサポート体制で、プログラミングスキルを確実に身につけられます!
✔一人ひとりに合わせた学習計画で進められるため、仕事や学校と両立できる
✔未経験者のために開発された実践的なカリキュラムを用意
✔︎専属コーチが卒業まで学習をサポート
\目的別で選べる3つのコース/
まとめ:Pythonの日付はシステム開発で必須の内容
今回はPythonの日付について、解説してきましたが、いかがでしたか。
文字列型や数値型と同じく日付型のデータは、システムを開発していく上で避けては通れない内容の1つです。
開発するシステムの種類にもよりますが、基本となる日付処理は今回解説した内容になります。
是非、日付処理を習得してPythonプログラマーとしてステップアップして頂ければと思います。