Python datetime.nowの使い方

この記事のポイント

Pythonのdatetime.nowは、現在の日時を取得するために欠かせない機能です。

この記事を読むと、次のようなことが身に付きます。

  • 「今」の日時を簡単に取得する方法がわかる
  • 日時を「2025年01月01日」のように見やすく表示する方法がわかる
  • ログやファイル名、処理時間の計測など実用的な使い方がわかる

この記事を通して、datetime.nowの正しい使い方をマスターすれば、ログの記録や処理時間の計測など、実用的なプログラムが書けるようになります。

目次

datetime.combineとは?

datetime.nowとは、Pythonで「今この瞬間の日時」を取得するためのメソッドです。プログラムを実行した時点の正確な年月日や時刻(時・分・秒)を知りたいときに使います。

datetime.nowは、Pythonにもともと用意されているdatetimeモジュールの一部なので、追加のインストールなしですぐに利用できます。

datetime.nowの特徴

  • 年、月、日、時、分、秒、マイクロ秒(100万分の1秒)までの詳細な情報を取得する
  • プログラムの実行ログに正確なタイムスタンプ(時刻の印)を残す際に役立つ
  • 処理にかかった時間を計測するなど、時間の計算にも利用される

日時を扱うプログラムを作成する上で、基本となる重要な機能です。

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

基本構文

datetime.nowを使用する際の基本的な書き方について説明します。まず、datetimeモジュールをインポートしてからnow関数を呼び出します。最もシンプルな使い方では引数を指定せずに現在時刻を取得できますが、タイムゾーン(時刻の地域設定)を指定することも可能です。以下のコード例では、基本的な使用方法を示しています。

from datetime import datetime # 基本的な使い方 now = datetime.now() print(now)

出力結果(例)

2025-11-20 12:34:56.789012

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

モジュール全体をインポートすることもできます。

import datetime # モジュール全体をインポートする方法 current_time = datetime.datetime.now() print(f"現在時刻: {current_time}")

出力結果(例)

現在時刻: 2025-11-20 12:30:00.123456

datetimeモジュールからdatetimeクラスを直接インポートする方法(from ... import ...)と、datetimeモジュール自体をインポートする方法(import datetime)の2パターンを紹介しました。

どちらもnowメソッドを呼び出すことで、実行した瞬間の日時(マイクロ秒まで)を取得できます。後者の方法ではdatetime.datetime.now()と記述する必要がある点に注意してください。

実用例

datetime.nowのさまざまな活用方法を、実際のコード例とあわせて紹介します。基本的な日時の取得から、開発現場でよく使われる応用例までを解説します。用途ごとの使い方のポイントも整理しているので、ご自身のプロジェクトで扱う際のヒントとして活用してみてください。

基本的な現在時刻の取得

最もシンプルな、現在の日時を取得する方法です。datetime.nowで取得した日時情報から、year(年)やhour(時)といった個別の情報を取り出して表示します。

from datetime import datetime now = datetime.now() print(f"現在の日時: {now}") print(f"年: {now.year}") print(f"月: {now.month}") print(f"日: {now.day}") print(f"時刻: {now.hour}時{now.minute}分{now.second}秒")

出力結果(例)

現在の日時: 2025-11-20 13:20:00.423006
年: 2025
月: 11
日: 20
時刻: 13時20分0秒

この例では、まずdatetime.now()で現在の日時情報をまとめて取得します。取得した変数nowには、年、月、日、時、分、秒などの情報がすべて含まれています。

now.yearやnow.monthのように「.(ドット)」でつなげることで、特定の日時情報(属性)を個別に呼び出して表示しています。

特定のタイムゾーンでの時刻取得

datetime.nowは、引数にタイムゾーンを指定することで、その地域の現在時刻を取得できます。海外向けのサービスなどでは必須の機能です。ここではpytzという外部ライブラリを使って、東京とニューヨークの時刻を取得します。

from datetime import datetime import pytz # 東京のタイムゾーンで取得 tokyo_tz = pytz.timezone('Asia/Tokyo') tokyo_time = datetime.now(tokyo_tz) print(f"東京の現在時刻: {tokyo_time}") # ニューヨークのタイムゾーンで取得 ny_tz = pytz.timezone('America/New_York') ny_time = datetime.now(ny_tz) print(f"ニューヨークの現在時刻: {ny_time}")

出力結果(例)

東京の現在時刻: 2025-11-20 20:25:00.185684+09:00
ニューヨークの現在時刻: 2025-11-20 06:25:00.186939-05:00

この例では、pytz.timezone()で東京(Asia/Tokyo)とニューヨーク(America/New_York)のタイムゾーン情報(tz)をまず作成しています。

情報をdatetime.now()の引数として渡すことで、それぞれの都市の現在時刻が取得できます。出力結果の末尾にある+09:00や-05:00は、世界標準時(UTC)からの時差(オフセット)を示しています。

日時のフォーマット変更

取得した日時をそのまま表示するのではなく「2025年01月15日」や「02:30 PM」のように、目的にあわせた見やすい表示形式に整える方法です。strftimeメソッド(文字列フォーマット時刻)を使います。

from datetime import datetime now = datetime.now() print(f"標準形式: {now}") print(f"日本語形式: {now.strftime('%Y年%m月%d日 %H時%M分%S秒')}") print(f"英語形式: {now.strftime('%B %d, %Y at %I:%M %p')}") print(f"簡潔形式: {now.strftime('%Y-%m-%d %H:%M')}")

出力結果(例)

標準形式: 2025-11-20 13:29:38.099162
日本語形式: 2025年11月20日 13時29分38秒
英語形式: November 20, 2025 at 01:29 PM
簡潔形式: 2025-11-20 13:29

この例では、strftimeメソッドの引数に、表示したい形式を指定する「書式化文字列」を渡しています。%Yは4桁の年、%mは2桁の月、%dは2桁の日、%Hは24時間制の時を意味します。

%から始まる記号(書式指定子)を組み合わせることで、日本語の「〜年〜月」や英語の「January 15」など、自由な形式で日時を文字列として出力できます。

ファイル名に現在時刻を含める

datatime.nowは、ログファイルやバックアップファイルを作成する際、ファイル名に日時を含めたいときにも便利です。ファイル名には「:」や「/」を使えないため、strftimeメソッド を使って安全な形式の文字列(タイムスタンプ)を作成します。

from datetime import datetime now = datetime.now() timestamp = now.strftime('%Y%m%d_%H%M%S') filename = f"ネコのデータ_{timestamp}.txt" backup_filename = f"イヌの設定_{timestamp}.bak" print(f"作成するファイル名: {filename}") print(f"バックアップファイル名: {backup_filename}") print(f"現在時刻: {now.strftime('%Y年%m月%d日 %H時%M分')}")

出力結果(例)

作成するファイル名: ネコのデータ_20251120_133053.txt
バックアップファイル名: イヌの設定_20251120_133053.bak
現在時刻: 2025年11月20日 13時30分

この例では、strftime('%Y%m%d_%H%M%S') を使って、「20240115_143025」のような、ファイル名として使える文字列(timestamp)を生成しています。

「:(コロン)」のような記号が取り除かれているのがポイントです。f文字列(フォーマット済み文字列リテラル)を使って、このtimestampをファイル名の一部に埋め込み、一意のファイル名を作成しています。

処理時間の計測

プログラムの実行時間を測定する際に使用します。処理の開始時刻と終了時刻を記録して、その差分を計算します。

from datetime import datetime import time print("ウサギの処理を開始します...") start_time = datetime.now() print(f"開始時刻: {start_time.strftime('%H:%M:%S')}") # 何らかの処理をシミュレート for _ in range(10_000_000): pass end_time = datetime.now() print(f"終了時刻: {end_time.strftime('%H:%M:%S')}") duration = end_time - start_time print(f"処理時間: {duration.total_seconds()}秒")

出力結果(例)

ウサギの処理を開始します...
開始時刻: 13:24:11
終了時刻: 13:24:12
処理時間: 0.312865秒

この例では、処理開始前にstart_timeで時刻を記録し、for_in rangeによる短い計算ループを回すことで「一定の処理時間がかかる状態」を擬似的に再現しています。処理が終わった直後にend_timeで再び時刻を記録します。

end_time - start_timeのように、取得した日時同士を引き算すると差分を計算でき、duration.total_seconds()で、差分を秒単位で表示しています。

特定の曜日を判定する

現在が何曜日かを判定し、「月〜金ならA、土日ならB」のように処理を分岐させたいときに使います。weekdayメソッド  を使うと、曜日を数値(月曜=0, 火曜=1, ... 日曜=6)で取得できます。

from datetime import datetime now = datetime.now() weekday = now.weekday() # 0:月曜日, 6:日曜日 weekday_names = ['月', '火', '水', '木', '金', '土', '日'] print(f"今日は{weekday_names[weekday]}曜日です") print(f"現在時刻: {now.strftime('%Y年%m月%d日 %H:%M')}") if weekday < 5: print("パンダは今日も元気に働いています!") else: print("キツネは今日はお休みです!")

出力結果(例)

今日は木曜日です
現在時刻: 2025年11月20日 13:33
パンダは今日も元気に働いています!

この例では、now.weekday()  で現在の曜日を数値として取得しています。出力例の実行日は月曜日のため、weekdayには0が入ります。

次にweekday_namesというリストの0番目の要素('月')を取り出して表示しています。if weekday < 5(数値が5未満、つまり0〜4=月〜金)という条件分岐を使って、平日か休日かでメッセージを変えています。

ログ出力に時刻を追加する

プログラムがいつ何をしたかを記録するログ出力に、時刻(タイムスタンプ)を追加する例です。strftimeメソッドで時刻を見やすい形式にし、ログメッセージの先頭に追加します。

from datetime import datetime def log_message(message, animal_name): now = datetime.now() timestamp = now.strftime('%Y-%m-%d %H:%M:%S') print(f"[{timestamp}] {animal_name}: {message}") # ログの使用例 log_message("システムを開始しました", "ライオン") log_message("データベースに接続しました", "ゾウ") log_message("処理が完了しました", "トラ") log_message("システムを停止します", "クマ")

出力結果(例)

[2025-11-20 13:34:02] ライオン: システムを開始しました
[2025-11-20 13:34:02] ゾウ: データベースに接続しました
[2025-11-20 13:34:02] トラ: 処理が完了しました
[2025-11-20 13:34:02] クマ: システムを停止します

この例では、ログメッセージと動物名を引数として受け取るlog_message関数を定義しています。

関数が呼び出されるたびに、datetime.now()でその瞬間の時刻を取得し、strftimeで「YYYY-MM-DD HH:MM:SS」の形式に整えています。print文の中で、タイムスタンプ、動物名、メッセージを組み合わせて、いつ誰が何をしたかのログとして表示しています。

まとめ

Pythonのdatetime.nowは、現在の日時を取得するための必須機能です。この記事では、基本的な使い方から実用的な活用例まで解説しました。

datetime.nowが活用できるような場面は次のようなケースです。

datetime.nowが活躍する場面

  • ログファイルにタイムスタンプを記録するとき
  • ファイル名に作成日時を自動で付けたいとき
  • プログラムの処理にかかった時間を計測したいとき

datetime.nowを用いる上で、押さえておきたいポイントを覚えておきましょう。

重要なポイント

  • はじめにdatetimeモジュールをインポートする
  • strftimeメソッド で自由な表示形式に変えられる
  • タイムゾーンを指定して海外の時刻も取得できる

初めてPythonを学ぶ方も、この記事で紹介したdatetime.nowを実際に書いて、基本的な使い方を試してみてください。

日時を扱う処理は、実際の開発で想像以上によく使用されます。マスターしておけば役立つこと間違いなしです。

ぜひdatetime.nowをマスターして、より実用的なプログラムを作成できるようになりましょう。

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

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