Python入門!日付と時刻を簡単操作!datetimeモジュールの使い方を徹底解説!

2025.10.10
カテゴリー:DX,オフショア開発,開発

 

Pythonで開発や分析をしていると、必ず登場するのが「日付」「時刻」の扱いです。ログの記録、ファイル名にタイムスタンプを付ける、データ分析で日付を基準にグルーピングする、など活用シーンは無数にあります。

 

datetimeモジュールは、時刻の取得・日付計算・フォーマット変換・タイムゾーン対応など、日常的に使う日時処理を1つのモジュールで完結できます。

 

例えば、

  • 今日から1週間後・1か月前の日付を求めたい
  • 2つの日付の差(日数・時間)を知りたい
  • タイムゾーンを考慮したグローバルなアプリを作りたい

 

といったニーズにすべて応えてくれるのがdatetimeです。

 

この記事では、Python標準ライブラリのdatetimeモジュールを使って「日付」と「時刻」を扱う方法を、Python初心者でも迷わず使えるよう、基本から応用までを体系的に解説していきます。

 

この記事でわかること

  • datetimeモジュールの基本構造
  • 日付・時刻の取得・表示・変換方法
  • timedeltaによる時間計算
  • 実務で役立つ応用例(ログ処理、スケジューリングなど)
  • よくあるエラーとその対処法

 

 

datetimeモジュールとは

 

Pythonのdatetimeモジュールは、日付や時刻を扱うための標準ライブラリです。外部パッケージをインストールする必要がなく、すぐに使えるのが魅力です。

 

import datetime

 

このモジュールには、以下のような主要クラスが含まれています

クラス名 役割
datetime.date 年・月・日を扱う
datetime.time 時・分・秒を扱う
datetime.datetime 日付+時刻をまとめて
datetime.timedelta 時間の差分を表現する

 

現在の日付・時刻を取得する方法

最も基本的な使い方は、現在の日時を取得することです。

 

from datetime import datetime

now = datetime.now()

print(now)  #  2025-09-10 22:22:00.123456

 

datetime.now()で現在の日時を取得できます。ミリ秒まで扱えるためログ出力などに便利です。

 

日付だけを取得したい場合

 

today = datetime.today().date()

print(today)  #  2025-09-10

 

date.today()で日付部分だけを取得可能です。

 

時刻だけを取得したい場合

 

current_time = datetime.now().time()

print(current_time)  # 22:22:00.123456

 

西暦・月・日・時・分・秒を引数に与えて任意の日時オブジェクトを作成できます。

 

日付・時刻のフォーマット変換(strftime / strptime)

Pythonでは、日付や時刻を文字列に変換したり、逆に文字列から日時オブジェクトを生成することができます。

strftimeメソッドで自由なフォーマットに整形できます。

 

例:

  • %Y:西暦4桁
  • %m:月(01〜12)
  • %d:日
  • %H:時(24時間制)
  • %M:分
  • %S:秒

 

文字列 → datetime

 

日付を文字列に変換(strftime)

 

formatted = now.strftime(‘%Y/%m/%d %H:%M:%S’)

print(formatted)  # 2025/09/10 22:22:00

 

文字列を日付に変換(strptime)

 

date_str = ‘2025-09-10 22:22:00’

parsed = datetime.strptime(date_str, ‘%Y-%m-%d %H:%M:%S’)

print(parsed)  # datetimeオブジェクトとして扱える

 

strptimeを使えば文字列からdatetimeオブジェクトを作成できます。データ分析でCSVから読み込んだ日付を変換する際に便利です。

 

日付の加算・減算(timedelta)

timedeltaを使えば、日付や時刻の計算が簡単にできます。

 

1週間後の日付を取得

 

from datetime import timedelta

one_week_later = now + timedelta(days=7)

print(one_week_later)

 

3時間前の時刻を取得

 

three_hours_ago = now – timedelta(hours=3)

print(three_hours_ago)

 

delta.daysで日数差を簡単に取得可能です。

 

タイムゾーンを扱う

Python 3.9以降ではzoneinfoが標準搭載され、タイムゾーンの扱いがより簡単になりました。

 

from datetime import datetime

from zoneinfo import ZoneInfo

dt_tokyo = datetime.now(ZoneInfo(‘Asia/Tokyo’))

dt_utc = datetime.now(ZoneInfo(‘UTC’))

print(dt_tokyo)

print(dt_utc)

 

ログや海外サービス連携ではUTC基準で記録し、表示時にローカルタイムに変換する運用が一般的です。

 

実務で役立つ応用例

 

ログファイルのタイムスタンプ処理

ログの記録に日時を付けることで、後からの分析が容易になります。

 

def log_message(message):

    timestamp = datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)

    print(f'[{timestamp}] {message}’)

log_message(“処理が完了しました”)

 

スケジュール管理アプリでの活用

ユーザーが指定した日付から、次回の予定を自動計算する例

 

def next_meeting(date_str):

    base_date = datetime.strptime(date_str, ‘%Y-%m-%d’)

    next_date = base_date + timedelta(days=14)

    return next_date.strftime(‘%Y-%m-%d’)

print(next_meeting(‘2025-09-10’))  #  2025-09-24

 

よくあるエラーと対処法

 

‘TypeError: unsupported operand type(s)’

日付と文字列を直接足そうとするとエラーになります。datetime型とstr型は互換性がないため、strptimeで変換してから操作しましょう

 

‘ValueError: time data does not match format’

strptimeのフォーマットが文字列と一致していないと発生します。フォーマット指定子(例:`%Y-%m-%d`)が正しいか確認しましょう

 

機械学習との関連性

 

機械学習では、時系列データの前処理にdatetimeモジュールが頻繁に使われます。

例:

  • センサーデータのタイムスタンプ処理
  • 時間帯による特徴量の抽出(例:朝・昼・夜)
  •  予測モデルにおける季節性の考慮

 

df[‘hour’] = df[‘timestamp’].dt.hour

df[‘weekday’] = df[‘timestamp’].dt.weekday

 

このように、datetimeは単なる日付操作以上に、データの意味を引き出す重要なツールです。

 

まとめ

Pythonのdatetimeモジュールは、初心者でも扱いやすく、実務でも非常に役立つ機能が詰まっています。日付や時刻の取得、変換、計算、そして応用まで、幅広い場面で活躍します。

 

機械学習やデータ分析を志す方はもちろん、日常的なスクリプト作成でも必須の知識です。まずは基本操作から始めて、少しずつ応用力を高めていきましょう!

 

また、「自社システムに日付処理を組み込みたい」「データ分析を効率化したい」といった 開発のご相談 があれば、ぜひ3ink までお問い合わせください。実務に即した最適なソリューションをご提案いたします。