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爆速講座