【完全独学Python】datetime(日時操作)はこれだけ覚えて!初心者向けに徹底解説!

基礎

こんにちは!ゆーや(@yuyamanm118712)です。

こちらのページでは完全独学でWebプログラマとなった私が

「datetime(日時)の操作」に関して必要な情報をまとめています。

この記事を読むと

  • datetimeを使って、現在日時が取得できる
  • datetimeを使って、日時のフォーマット変更ができる
  • datetimeを使って、日時の演算ができる
  • datetimeを使って、日時の比較ができる
  • 文字列からdatetimeオブジェクトを作成できる

最後までじっくりと読んで、一緒に学習にしていきましょう。

なお、ご指摘・ご質問はTwitter(@yuyamanm118712)のDMまでよろしくお願いします。

datetimeの基本操作

datetimeモジュールのインポート

import datetime
ゆーや
ゆーや

datetimeを使用するには、まずdatetimeモジュールをインポートしよう!

現在日時の取得

import datetime

# 現在の日時を取得
now = datetime.datetime.now()
print("現在の日時:", now)

# 実行結果: 現在の日時: 2024-04-23 20:35:43.791789
ゆーや
ゆーや

現在日時はnow()で取得できる!
ただし、datetimeが2回続くことに注意!

特定の日時を取得

import datetime

# 特定の日時を指定してオブジェクトを作成
the_date = datetime.datetime(2023, 6, 9, 11, 35, 59)
print("特定の日時:", the_date)

# 実行結果: 特定の日時: 2023-06-09 11:35:59  
ゆーや
ゆーや

特定の日時でdatetimeオブジェクトを作成することもできます!

datetime(年,月,日,時,分,秒)で作成!引数を増やせば、ミリ秒まで指定できるよ!

datetimeオブジェクトから年、月、日、時、分、秒を取得

import datetime

# 現在の日時を取得
now = datetime.datetime.now()
print("現在の年:", now.year)
print("現在の月:", now.month)
print("現在の日:", now.day)
print("現在の時:", now.hour)
print("現在の分:", now.minute)
print("現在の秒:", now.second)


# 実行結果: 
現在の年: 2024
現在の月: 4
現在の日: 23
現在の時: 20
現在の分: 47
現在の秒: 16
ゆーや
ゆーや

それぞれ英語にしただけなので覚えやすい!

日時のフォーマットの変更

import datetime

# 現在の日時を取得
now = datetime.datetime.now()

# 日時を文字列に変換
formatted_date = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print("フォーマット後の日時:", formatted_date)

# 実行結果: フォーマット後の日時: 2024年04月23日 20時42分32秒
ゆーや
ゆーや

strftimeを使用すれば好みのフォーマットで日時を出力できる!
いろいろ試してみてね!

日時の演算

日、時、分、秒の計算

import datetime

# 現在の日時を取得
now = datetime.datetime.now()

# 1日後の日時を計算
one_day_after = now + datetime.timedelta(days=1)
print("1日後:", one_day_after)

# 1時間前の日時を計算
one_hour_before = now - datetime.timedelta(hours=1)
print("1時間前:", one_hour_before)

# 1分前の日時を計算
one_minute_before = now - datetime.timedelta(minutes=1)
print("1分前:", one_minute_before)

# 1秒前の日時を計算
one_second_before = now - datetime.timedelta(seconds=1)
print("1秒前:", one_second_before)

# 実行結果:
1日後: 2024-04-24 21:00:03.443701
1時間前: 2024-04-23 20:00:03.443701
1分前: 2024-04-23 20:59:03.443701
1秒前: 2024-04-23 21:00:02.443701
ゆーや
ゆーや

timedeltaを使用すれば、日未満の計算ができる!
引数が複数形になっていることに注意!

【応用】年、月の計算

import datetime
from dateutil.relativedelta import relativedelta

# 現在の日時を取得
now = datetime.datetime.now()

# 1年後の日時を計算
one_year_after = now + relativedelta(years=1)
print("1年後:", one_year_after)

# 1カ月前の日時を計算
one_month_before = now - relativedelta(months=1)
print("1カ月前:", one_month_before)

# 実行結果:
1年後: 2025-04-23 21:03:33.745712
1カ月前: 2024-03-23 21:03:33.745712
ゆーや
ゆーや

dateutilrelativedeltaというモジュールを使えば、年、月単位の計算ができる!
これを覚えておけば、1歩リード!

日時の比較

import datetime

# 現在の日時を取得
now = datetime.datetime.now()

# 比較する日時
the_date = datetime.datetime(2023, 6, 9, 11, 35, 59)

if now > the_date :
    print("the_dateは過去の日付です")
elif now < the_date :
    print("the_dateは未来の日付です")
else :
    print("現在の日時とthe_dateは同じ日時です")

# 実行結果:
the_dateは過去の日付です
ゆーや
ゆーや

比較演算子を使用して直感的に比較できるのは便利だね!

比較演算子ってなんだっけ?という方は↓↓↓

文字列からdatetimeオブジェクトを作る

import datetime

date_str = "2023-04-23"
parsed_date = datetime.datetime.strptime(date_str, "%Y-%m-%d")

print("文字列からの変換:", parsed_date)

# 実行結果:
文字列からの変換: 2023-04-23 00:00:00
ゆーや
ゆーや

strptime(文字列, 文字列のフォーマット)でdatetimeオブジェクトの作成ができる!
システム開発の現場でもたくさん使うよ!

まとめ

① 現在日時の取得
② 特定の日時のdatetimeオブジェクトの作成
③ datetimeオブジェクトから年、月、日、時、分、秒を取得
④ 日時のフォーマットの変更
⑤ 日時の演算(日、時、分、秒の計算)
⑥ 【応用】日時の演算(年、月の計算)
⑦ 日時の比較
⑧ 文字列からdatetimeオブジェクトを作る

ゆーや
ゆーや

まとめの内容を見て、もう頭に浮かべば完璧!

最近の投稿

コメント

タイトルとURLをコピーしました