Pythonで現在時刻・日付・日時を取得する方法【完全版】
Pythonではdatetimeモジュールを使用することで、現在の時刻、日付、日時を簡単に取得できます。この記事では、さまざまな取得方法とフォーマット例を詳しく解説します。
目次
現在の日時を取得する基本方法
datetime.now()を使用
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
print(now) # 2024-01-15 14:30:25.123456
print(type(now)) # <class 'datetime.datetime'>
現在の日付のみを取得
from datetime import date
# 現在の日付のみ取得
today = date.today()
print(today) # 2024-01-15
print(type(today)) # <class 'datetime.date'>
# datetimeから日付部分のみ抽出
now = datetime.now()
today_from_now = now.date()
print(today_from_now) # 2024-01-15
現在時刻の各要素を個別に取得
from datetime import datetime
now = datetime.now()
print(f"年: {now.year}") # 年: 2024
print(f"月: {now.month}") # 月: 1
print(f"日: {now.day}") # 日: 15
print(f"時: {now.hour}") # 時: 14
print(f"分: {now.minute}") # 分: 30
print(f"秒: {now.second}") # 秒: 25
フォーマットされた現在時刻の取得
基本的なフォーマット
from datetime import datetime
now = datetime.now()
# 日付のみ
print(now.strftime('%Y-%m-%d')) # 2024-01-15
print(now.strftime('%Y年%m月%d日')) # 2024年01月15日
# 時刻のみ
print(now.strftime('%H:%M:%S')) # 14:30:25
print(now.strftime('%H時%M分%S秒')) # 14時30分25秒
# 日時を組み合わせ
print(now.strftime('%Y-%m-%d %H:%M:%S')) # 2024-01-15 14:30:25
曜日を含むフォーマット
now = datetime.now()
print(now.strftime('%Y年%m月%d日 (%A)')) # 2024年01月15日 (Monday)
print(now.strftime('%Y年%m月%d日 (%a)')) # 2024年01月15日 (Mon)
print(now.strftime('%Y/%m/%d (%w)')) # 2024/01/15 (1)
timeモジュールを使用した方法
time.time()でエポック秒を取得
import time
from datetime import datetime
# 現在のエポック秒
epoch_seconds = time.time()
print(epoch_seconds) # 1705315825.123456
# エポック秒からdatetimeに変換
dt = datetime.fromtimestamp(epoch_seconds)
print(dt) # 2024-01-15 14:30:25.123456
time.localtime()で現在時刻の詳細を取得
import time
# 現在時刻の構造体を取得
local_time = time.localtime()
print(local_time.tm_year) # 2024
print(local_time.tm_mon) # 1
print(local_time.tm_mday) # 15
print(local_time.tm_hour) # 14
print(local_time.tm_min) # 30
print(local_time.tm_sec) # 25
UTC時刻の取得
from datetime import datetime, timezone
# UTC時刻を取得
utc_now = datetime.now(timezone.utc)
print(utc_now) # 2024-01-15 05:30:25.123456+00:00
# UTCのタイムゾーン情報なし
utc_now_naive = datetime.utcnow()
print(utc_now_naive) # 2024-01-15 05:30:25.123456
実用的な応用例
ログ用のタイムスタンプ
from datetime import datetime
def get_timestamp():
return datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"[{get_timestamp()}] プログラム開始")
# [2024-01-15 14:30:25] プログラム開始
ファイル名に現在時刻を含める
from datetime import datetime
def create_filename(prefix="log"):
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
return f"{prefix}_{timestamp}.txt"
filename = create_filename("backup")
print(filename) # backup_20240115_143025.txt
実行時間の計測準備
import time
from datetime import datetime
start_time = datetime.now()
print(f"処理開始: {start_time.strftime('%H:%M:%S')}")
# 何らかの処理
time.sleep(2)
end_time = datetime.now()
print(f"処理終了: {end_time.strftime('%H:%M:%S')}")
print(f"実行時間: {end_time - start_time}")
パフォーマンスの考慮
頻繁に現在時刻を取得する場合は、処理速度を考慮しましょう。
import time
from datetime import datetime
# より高速(ただしdateオブジェクトが必要な場合)
start = time.time()
for i in range(100000):
_ = time.time()
print(f"time.time(): {time.time() - start:.3f}秒")
# 標準的な方法
start = time.time()
for i in range(100000):
_ = datetime.now()
print(f"datetime.now(): {time.time() - start:.3f}秒")
まとめ
datetime.now():現在の日時を取得date.today():現在の日付のみを取得strftime():フォーマットされた文字列として取得time.time():エポック秒として取得- UTC時刻が必要な場合は
datetime.now(timezone.utc)を使用
用途に応じて適切な方法を選択することで、効率的に現在時刻を取得できます。
■らくらくPython塾 – 読むだけでマスター
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座



