Pythonには、日付と時刻に対して様々な処理を行う事ができるdatetimeモジュールがあります。
アプリやシステムで日付や時刻を扱う事は良くありますよね。
ここではdatetimeモジュールの基本的な知識から使い方まで理解していただけるよう噛み砕いて解説します。
datetimeモジュールをマスターしよう
独学でプログラミングを習得する時、日本の受験勉強が弊害なのかは分かりませんが、文法や記述方法を一生懸命に隈なく覚えようとします。
このやり方は、今すぐ捨てて下さい。
なぜならその先には、挫折が待っているからです。
プログラムは楽しんで、グリグリいじってナンボです。
手を使って使い方を理解すれば良いと思います。
datetimeモジュールをイキナリ使って見よう!
REPLでdatetimeモジュールを使ってみましょう。
datetimeモジュールは組み込みモジュールでは無いので、まずはモジュールを呼び出します。
モジュールの呼び出し
>>> import datetime
エラー表示がなければ、正常に読み込まれた事になります。
良くあるスペルミスとして「datetime」を「datatime」と誤入力する事がありますので気をつけましょう。
datetime.date型で年月日を作る
2019年12月10日を作ってみましょう。
>>> day = datetime.date(year=2019, month=12, day=10)
datetimeモジュールのdataクラスを使うので、「datetime.date」と記述します。
「.」は「の」と頭の中で変換し「datetimeのdate」とすると理解しやすくなります。
クラス名の後に丸括弧内で年,月,日をカンマで区切って指定しています。
ちなみに各項目の先頭部分(year=,month=,day=は省略可能です。
day = datetime.date(2019, 12, 10)でも大丈夫です。
作られた日付は「day」という変数に格納されていますので、printを使って呼び出してみましょう。
>>>print(day)
2019-12-10
2019-12-10が表示されたら成功です。
何曜日かを取得するdate型のweekdayメソッド
date型には何曜日かを計算するweekdayメソッドがあります。
weekdayメソッドは曜日を0~6で表し、起点となる0は月曜日から始まります。
早速、先ほど取得した2019年12月10日(火)で曜日の戻り値を取得して見ます。
>>> day.weekday()
1
火曜日なので「1」を返します。
weekdayメソッド:曜日と戻り値の対応表
曜日 | 戻り値 |
---|---|
月曜日 | 0 |
火曜日 | 1 |
水曜日 | 2 |
木曜日 | 3 |
金曜日 | 4 |
土曜日 | 5 |
日曜日 | 6 |
今日の日付を取得する
今日の日付を取得するにはdatetime.date.today()メソッドを使います。
>>> import datetime
>>> datetime.date.today()
datetime.date(2019, 12, 23)
今日の時刻を取得する
今日の時刻を取得するにはdatetime.datetime.now()メソッドを使います。
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2019, 12, 23, 9, 5, 37, 961033)
datetimeのクラスまとめ
class | 説明 |
---|---|
date | 年月日を表現 |
time | 時刻を表現 |
datetime | 年月日と時刻を表現 |
日付の計算
日付の計算に使えるのがdatetimeのtimedeltaです。
例えば5日後のデートの前日にお知らせを出すとかのカレンダー機能と連携した仕組みを作るときはtimedeltaを使って実装することも出来ます。
ここでは、今日から250日前の答えをサクッと出力して見ましょう。
2019年12月23日から250日前を出力
>>> import datetime
>>> today = datetime.date.today()
>>> date_250_before = datetime.timedelta(days=-250)
>>> print(today+date_250_before)
2019-04-17
2019年12月23日から250日前は4月17日でした。
応用:今日まで何日生きたかを計算する
datetimeを使って日付の計算もできます。試しに今日まで何日生きたかを計算します。
例えばあなたが1990年8月7日生まれで今日(2019年12月23日)まで何日生きたかを計算します。
>>> import datetime
>>> date_birth = datetime.date(1990,8,7)
>>> date_today = datetime.date.today()
>>> date_countday = date_today - date_birth
>>> print(date_countday)
10730 days, 0:00:00
10,730日生きてきたのですね。夕飯も1万回以上食べた事になります。
日付表示の変更
日付の表示はyyyy-mm-ddの形式でフォーマットされています。
しかし、利用しているシステムでは「-(ハイフン)」ではなく「/(スラッシュ)」の場合もあります。
「-」から「/」へ変更したい場合は以下で可能です。
「-」から「/」の変更方法
>>> import datetime
>>> date_today_slash= "{0:%Y/%m/%d}".format(date_today)
>>> print(date_today_slash)
2019/12/23
日付の変更(日付型⇄文字列)方法
日付型から文字列へ変更する場合や、文字列から日付型への変更を解説します。
日付型から文字列への変更
strftimeを使用して日付型から文字列へ変更します。
>>> import datetime
>>> date_today = datetime.datetime(2019, 12, 23)
>>> print(date_today.strftime("%Y/%m/%d"))
2019/12/23
文字列から日付型への変更
strptimeを使用して文字列から日付型へ変更します。
>>> import datetime
>>> date_today_str = "2019/12/23"
>>> date_today = datetime.datetime.strptime(date_today_str, "%Y/%m/%d")
>>> print(date_today)
2019-12-23 00:00:00
まとめ
日付については、システムやアプリで利用する事が多いと思います。
使い方も覚える事もあまり多くないのでサクッとマスターできますよ。