Python datetimeの使い方

この記事のポイント

Pythonのdatetimeは日付や時刻を扱うための標準ライブラリで、さまざまな時間操作を簡単に実現できます。業務システムやデータ分析など幅広い場面で活躍するため、実務的にも重要です。この記事を読むことで、以下のようなことが身につきます。

  • 日付と時刻の取得、計算、フォーマット変換が可能な標準ライブラリ
  • 日付の加算・減算やタイムゾーン変換など高度な時間操作の実現
  • 文字列との相互変換によるデータ処理やログ管理への応用

この記事を通してdatetimeモジュールの使い方をしっかり習得し、日付や時刻を自在に操る方法をマスターしましょう。

目次

datetimeとは?

Pythonのdatetimeは、Pythonの標準ライブラリに含まれる日付や時刻を扱うためのモジュールです。このモジュールを使えば、現在の日時取得、特定日時の作成、日付計算、フォーマット変換など、時間に関する操作を一通りこなせます。

プログラミングにおいて日時の処理は非常に重要で、ログファイルのタイムスタンプ記録、予約システムの日程管理、データ分析における時系列処理など、多くの場面で欠かせません。datetimeモジュールには、date(日付)、time(時刻)、datetime(日付と時刻)、timedelta(時間差)といった複数のクラスが用意されています。それぞれの機能を学び、目的に合わせて使い分けていきましょう。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

基本構文

Pythonのdatetimeを扱うには、まずモジュールをインポートすることから始めます。ここでは最も基本的な使い方として、現在の日時を取得する方法と特定の日時を作成する方法を見ていきましょう。

現在の日時を取得するには、datetime.now()メソッドを使用します。これにより、プログラム実行時点の年月日と時分秒を含む情報を取得できます。

# 現在時刻を表示するサンプル from datetime import datetime def main() -> None: now = datetime.now() print(now) if __name__ == "__main__": main()

出力結果(例)

2025-11-15 14:00:48.876832

※このページ内のコードの出力結果の一部で、実行した時刻により変動するものがあります。また、日時はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります


特定の日時を作成するには、datetimeクラスのコンストラクタに年月日時分秒を指定します。引数は年、月、日が必須で、時分秒はオプションです。

# 指定日時を表示するサンプル from datetime import datetime SPECIFIC_DATE = datetime(2024, 12, 25, 18, 30, 0) def main() -> None: print(SPECIFIC_DATE) if __name__ == "__main__": main()

出力結果

2024-12-25 18:30:00

日付のみを扱いたい場合はdateクラス、時刻のみを扱いたい場合はtimeクラスを使用することもできます。これらのクラスを使い分けることで、より効率的なコードを書くことができます。

実用例

ここからは、Pythonのdatetimeモジュールを使った実践的なコード例を紹介します。それぞれの例では、実際の開発現場でよく使われる操作を取り上げ、具体的なコードとその実行結果を示します。

サンプルコードは動物の名前を使った、初心者の方でも理解しやすい内容です。各コード例の前後には詳しい説明や役立つシーンを添えており、実務での活用イメージがつかみやすくなっています。

現在の日付と時刻を取得する

プログラムを実行した瞬間の日付と時刻を取得する最も基本的な操作です。ログ記録やタイムスタンプの付与など、あらゆる場面で使用される重要な機能になります。

# プログラムを実行した時点の日付と時刻を表示 from datetime import datetime ANIMAL_NAME = "ネコ" def main() -> None: current_time = datetime.now() print(f"{ANIMAL_NAME}の記録時刻: {current_time}") if __name__ == "__main__": main()

出力結果(例)

ネコの記録時刻: 2025-11-15 14:00:52.536011

このコードは、システムの現在時刻を取得してネコの記録時刻として表示します。datetime.nowメソッドは実行した瞬間の日時を返すため、プログラムを実行するたびに異なる値が表示されます。

特定の日付を作成する

誕生日や記念日など、特定の日付をプログラム内で扱いたい場合に使用します。年月日を指定することで、任意の日付オブジェクトを作成できます。

# 動物の誕生日を設定、表示 from datetime import datetime BIRTHDAY = datetime(2020, 3, 15) ANIMAL_NAME = "イヌ" def main() -> None: formatted_birthday = BIRTHDAY.strftime("%Y年%m月%d日") print(f"{ANIMAL_NAME}の誕生日: {formatted_birthday}") if __name__ == "__main__": main()

出力結果

イヌの誕生日: 2020年03月15日

datetimeコンストラクタに年、月、日を渡すことで特定の日付を作成しています。strftimeメソッドを使うことで、日付を見やすい形式に変換して表示できます。

日付の差分を計算する

2つの日付の間隔を計算する方法です。期間の計算やカウントダウン機能など、実用的な場面で頻繁に使われます。

# 動物の観察期間を計算して表示 from datetime import datetime, timedelta START_DATE = datetime(2024, 1, 1) END_DATE = datetime(2024, 10, 31) ANIMAL_NAME = "ペンギン" def main() -> None: difference: timedelta = END_DATE - START_DATE print(f"{ANIMAL_NAME}の観察期間: {difference.days}日間") if __name__ == "__main__": main()

出力結果

ペンギンの観察期間: 304日間

2つのdatetimeオブジェクトを減算すると、timedeltaオブジェクトが返されます。daysプロパティを使うことで、日数として差分を取得できます。

日付をフォーマットして表示する

日付を人間が読みやすい形式に変換する方法です。レポート作成や画面表示など、ユーザーに情報を提示する際に重要な機能です。

# 日付を人間が読みやすい形式に変換 from datetime import datetime ANIMAL_NAME = "クマ" def main() -> None: now = datetime.now() formatted = now.strftime("%Y年%m月%d日 %H時%M分") print(f"{ANIMAL_NAME}の観測時刻: {formatted}") if __name__ == "__main__": main()

出力結果(例)

クマの観測時刻: 2025年11月15日 14時00分

strftime()メソッドはフォーマット指定子を使って日付を自由な形式に変換できます。%Yは4桁の年、%mは月、%dは日、%Hは時、%Mは分を表します。

文字列から日付オブジェクトを作成する

テキストファイルやユーザー入力から受け取った文字列を日付オブジェクトに変換する方法です。外部データの処理で必須となる操作になります。

# 文字列から日時オブジェクトに変換して動物の登録日を表示 from datetime import datetime DATE_STRING = "2024-06-15" ANIMAL_NAME = "キツネ" def main() -> None: date_object = datetime.strptime(DATE_STRING, "%Y-%m-%d") print(f"{ANIMAL_NAME}の登録日: {date_object}") if __name__ == "__main__": main()

出力結果

キツネの登録日: 2024-06-15 00:00:00

strptimeメソッドは文字列とフォーマットを指定することで、文字列をdatetimeオブジェクトに変換します。データベースやCSVファイルから読み込んだ日付文字列を処理する際に便利です。

日付に日数を加算・減算する

特定の日付から数日後や数日前の日付を計算する方法です。予約システムや期限管理など、未来や過去の日付を扱う場面で活用されます。

# 指定日から一定日数後の次回健診日を表示 from datetime import datetime, timedelta TODAY = datetime(2024, 1, 15) ANIMAL_NAME = "リス" DAYS_AHEAD = 30 def main() -> None: future = TODAY + timedelta(days=DAYS_AHEAD) formatted_date = future.strftime("%Y年%m月%d日") print(f"{ANIMAL_NAME}の次回健診日: {formatted_date}") if __name__ == "__main__": main()

出力結果

リスの次回健診日: 2024年02月14日

timedeltaオブジェクトを使うことで、日付に対して日数の加算や減算ができます。days以外にも、weeks、hours、minutes、secondsなどのパラメータが使用できます。

時刻の比較を行う

2つの日付や時刻を比較して、どちらが新しいか古いかを判定する方法です。条件分岐やソート処理など、論理的な判断が必要な場面で使用されます。

# 2つの日付を比較して動物の最初の記録日を表示 from datetime import datetime # 定数定義 DATE1 = datetime(2024, 3, 1) DATE2 = datetime(2024, 3, 15) ANIMAL_NAME = "シカ" def main() -> None: if DATE1 < DATE2: formatted_date = DATE1.strftime("%m月%d日") print(f"{ANIMAL_NAME}の最初の記録は{formatted_date}です") if __name__ == "__main__": main()

出力結果

シカの最初の記録は03月01日です

datetimeオブジェクトは比較演算子を使って直接比較できます。この機能を使うことで、イベントの順序づけや期限のチェックなど、様々な処理を実装できます。

まとめ

Pythonのdatetimeモジュールは、日付と時刻を扱うための使いやすいツールです。基礎を押さえれば、幅広い用途に対応するプログラムが書けるようになります。このモジュールは標準ライブラリに含まれているため、追加のインストールなしですぐに使い始められる点も大きな魅力です。

datetimeの活躍する場面

  • ログファイルへのタイムスタンプ記録により、システムの動作履歴を正確に追跡
  • 予約システムや期限管理における日付計算で、ビジネスロジックを実装
  • データ分析における時系列データの処理により、トレンドやパターンを発見

重要なポイント

  • datetimeモジュールには複数のクラスがあり、用途に応じた使い分けが重要
  • strftime()とstrptime()を使いこなすことで、文字列との相互変換が自在
  • timedeltaオブジェクトを活用することで、日付の計算が簡単に実現可能

Pythonのdatetimeを使いこなせるようになると、プログラムの実用性が大きく向上します。まずは基本的な操作から始めて、徐々に複雑な処理にも挑戦してみてください。この記事で紹介したコード例を実際に動かしながら学習することで、確実にスキルアップできるでしょう。日付と時刻の処理は、業務向けシステムからWebサービスまで幅広く必要とされる基本的なスキルですので、しっかりと身につけておくことをお勧めします。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python datetimeの使い方