ユーニックス総合研究所

  • home
  • archives
  • python-datetime-today

Pythonのdatetime.today()で現在時刻を取得: 年、月、日、時、分、秒の取得

  • 作成日: 2021-06-06
  • 更新日: 2023-12-24
  • カテゴリ: Python

Pythonで現在時刻を取得する

Pythonではライブラリを使うと現在時刻を取得することができます。
ライブラリは標準ライブラリのdatetimeを使います。
結論から言うとdatetimeを使って現在時刻を取得するには↓のようにします。

from datetime import datetime  


today = datetime.today()  
print(today)  
# 2021-04-21 21:07:22.417046  

この記事ではdatetimeを使って現在時刻を取得する方法、取得した現在時刻を利用する方法をわかりやすく解説します。
具体的には↓を見ていきます。

  • datetimeとは?
  • datetime.datetimeオブジェクトとは?
  • 現在時刻の取得方法
  • 現在時刻の属性値
  • 現在時刻からn時間前の時刻
  • 現在時刻からn時間後の時刻

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】

datetimeとは?

PythonのdatetimeとはPythonの標準ライブラリの1つです。

このライブラリ、モジュールには時刻に関するツールが格納されています。
datetimeの関数を使うと現在時刻を取得出来たり、時間同士の差分を計算したり、文字列を時刻にしたり、時刻を文字列にすることが可能です。

類似のモジュールにはcalendartimeがあります。
calendarは汎用のカレンダーを扱えるモジュールです。
timeは時刻に特化したモジュールです。

datetimeを使いたい場合は↓のようにdatetimeをインポートすることで使うことができます。

import datetime  

datetime.datetimeオブジェクトとは?

datetimeモジュールには複数のオブジェクトが保存されています。
datetime, datetimeオブジェクト等々。

datetimeオブジェクトはdatetimeモジュールと名前がかぶっていてわかりづらいですが、階層的には

+ datetime  
`----------- datetime  

です。
そのため、

import datetime  


print(datetime.datetime)  
# <class 'datetime.datetime'>  

のようにアクセスすることができます。
datetimeオブジェクトは日付と時刻をまとめて管理するオブジェクトです。
このオブジェクトを使うと日付と時刻にまつわる処理を書くことができます。

datetimeはグレゴリオ暦が両方向に延長されているものと仮定されています。
また、datetimeは1日1日が厳密に60 * 60 * 24秒であると仮定しています。
60秒は1分でそれが60個で1時間、さらにそれが24個なのできっちり24時間と言うことですね。

現在時刻の取得方法

現在時刻を取得するにはdatetime.datetimeオブジェクトのtoday()関数を使います。
today()は↓のような構造になっています。

classmethod datetime.today()  

today()はタイムゾーンを指定できません。
タイムゾーンを指定したい場合はnow()を使います。

today()は時刻の取得に成功すると現在時刻を格納したdatetime.datetimeオブジェクトを返します。

from datetime import datetime  


today = datetime.today()  

print(type(today))  
# <class 'datetime.datetime'>  

print(today)  
# 2021-04-21 21:58:17.969627  

現在時刻の属性値

today()が返すdatetime.datetimeオブジェクトには属性があります。
この属性にアクセスすることで具体的な現在時刻の情報に触れることができます。

時刻に関する属性は↓の通りです。

属性 表現する時間 値の範囲
year 年数 MINYEAR <= year <= MAXYEAR
month 月数 1 <= month <= 12
day 日数 1 <= day <= 指定された月と年における日数
hour 時数 0 <= hour < 24
minute 分数 0 <= minute < 60
second 秒数 0 <= second < 60
microsecond マイクロ秒数 0 <= microsecond < 1000000

属性の参照は↓のようにします。

from datetime import datetime  


today = datetime.today()  

print(today.year)  # 2021  
print(today.month)  # 4  
print(today.day)  # 21  
print(today.hour)  # 21  
print(today.minute)  # 15  
print(today.second)  # 26  
print(today.microsecond)  # 950872  

*↑の出力は実行環境によって変わります。

現在時刻からn時間前の時刻

現在時刻からn時間前の時刻を取得したい場合があります。
そういう場合はdatetime.timedelta()を使います。
timedelta()は経過時間を表現するオブジェクトです。
現在時刻から1時間前の時刻を取得したい場合は↓のようにします。

from datetime import datetime, timedelta  


today = datetime.today()  
dt = today - timedelta(hours=1)  

print(dt)  
# 2021-04-21 21:22:14.545597  

最初にdatetime.today()で現在時刻を取得します。
そしてtimedelta(hours=1)でオブジェクトを作成し、それをtodayから引きます。
その結果であるdtには演算された時刻が保存されています。

timedelta()に指定できる引数は↓の通りです。

  • days
  • seconds
  • microseconds
  • milliseconds
  • minutes
  • hours
  • weeks

↑の引数を見ると時間の他にも分数や秒数、日数なども指定できることがわかります。

現在時刻からn時間後の時刻

現在時刻からn時間後の時刻を取得したい場合は↓のようにします。

from datetime import datetime, timedelta  


today = datetime.today()  
dt = today + timedelta(hours=1)  

print(dt)  
# 2021-04-21 22:22:14.545597  

timedeltaの引数などの詳細については前述の項を参照してください。
n時間前の演算と比べると演算が足し算になっているのがわかります。
このようにtimedeltaオブジェクトはdatetime.datetimeオブジェクトと演算させることができます。

おわりに

今回はPythonで現在時刻を取得する方法を見てみました。
現在時刻を取得したいケースはけっこうありますが、Pythonでは簡単に取得できますね。

🦝 < 今何時ですか?

🐭 < 右側です

🦊 < 日時計かよ