datetime.combineとは?
datetime.nowとは、Pythonで「今この瞬間の日時」を取得するためのメソッドです。プログラムを実行した時点の正確な年月日や時刻(時・分・秒)を知りたいときに使います。
datetime.nowは、Pythonにもともと用意されているdatetimeモジュールの一部なので、追加のインストールなしですぐに利用できます。
datetime.nowの特徴
- 年、月、日、時、分、秒、マイクロ秒(100万分の1秒)までの詳細な情報を取得する
- プログラムの実行ログに正確なタイムスタンプ(時刻の印)を残す際に役立つ
- 処理にかかった時間を計測するなど、時間の計算にも利用される
日時を扱うプログラムを作成する上で、基本となる重要な機能です。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
datetime.nowを使用する際の基本的な書き方について説明します。まず、datetimeモジュールをインポートしてからnow関数を呼び出します。最もシンプルな使い方では引数を指定せずに現在時刻を取得できますが、タイムゾーン(時刻の地域設定)を指定することも可能です。以下のコード例では、基本的な使用方法を示しています。
出力結果(例)
2025-11-20 12:34:56.789012※このページ内のコードの出力結果は、実行した時刻により変動します。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります
モジュール全体をインポートすることもできます。
出力結果(例)
現在時刻: 2025-11-20 12:30:00.123456datetimeモジュールからdatetimeクラスを直接インポートする方法(from ... import ...)と、datetimeモジュール自体をインポートする方法(import datetime)の2パターンを紹介しました。
どちらもnowメソッドを呼び出すことで、実行した瞬間の日時(マイクロ秒まで)を取得できます。後者の方法ではdatetime.datetime.now()と記述する必要がある点に注意してください。
実用例
datetime.nowのさまざまな活用方法を、実際のコード例とあわせて紹介します。基本的な日時の取得から、開発現場でよく使われる応用例までを解説します。用途ごとの使い方のポイントも整理しているので、ご自身のプロジェクトで扱う際のヒントとして活用してみてください。
基本的な現在時刻の取得
最もシンプルな、現在の日時を取得する方法です。datetime.nowで取得した日時情報から、year(年)やhour(時)といった個別の情報を取り出して表示します。
出力結果(例)
現在の日時: 2025-11-20 13:20:00.423006
年: 2025
月: 11
日: 20
時刻: 13時20分0秒この例では、まずdatetime.now()で現在の日時情報をまとめて取得します。取得した変数nowには、年、月、日、時、分、秒などの情報がすべて含まれています。
now.yearやnow.monthのように「.(ドット)」でつなげることで、特定の日時情報(属性)を個別に呼び出して表示しています。
特定のタイムゾーンでの時刻取得
datetime.nowは、引数にタイムゾーンを指定することで、その地域の現在時刻を取得できます。海外向けのサービスなどでは必須の機能です。ここではpytzという外部ライブラリを使って、東京とニューヨークの時刻を取得します。
出力結果(例)
東京の現在時刻: 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メソッド(文字列フォーマット時刻)を使います。
出力結果(例)
標準形式: 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メソッド を使って安全な形式の文字列(タイムスタンプ)を作成します。
出力結果(例)
作成するファイル名: ネコのデータ_20251120_133053.txt
バックアップファイル名: イヌの設定_20251120_133053.bak
現在時刻: 2025年11月20日 13時30分この例では、strftime('%Y%m%d_%H%M%S') を使って、「20240115_143025」のような、ファイル名として使える文字列(timestamp)を生成しています。
「:(コロン)」のような記号が取り除かれているのがポイントです。f文字列(フォーマット済み文字列リテラル)を使って、このtimestampをファイル名の一部に埋め込み、一意のファイル名を作成しています。
処理時間の計測
プログラムの実行時間を測定する際に使用します。処理の開始時刻と終了時刻を記録して、その差分を計算します。
出力結果(例)
ウサギの処理を開始します...
開始時刻: 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)で取得できます。
出力結果(例)
今日は木曜日です
現在時刻: 2025年11月20日 13:33
パンダは今日も元気に働いています!この例では、now.weekday() で現在の曜日を数値として取得しています。出力例の実行日は月曜日のため、weekdayには0が入ります。
次にweekday_namesというリストの0番目の要素('月')を取り出して表示しています。if weekday < 5(数値が5未満、つまり0〜4=月〜金)という条件分岐を使って、平日か休日かでメッセージを変えています。
ログ出力に時刻を追加する
プログラムがいつ何をしたかを記録するログ出力に、時刻(タイムスタンプ)を追加する例です。strftimeメソッドで時刻を見やすい形式にし、ログメッセージの先頭に追加します。
出力結果(例)
[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をマスターして、より実用的なプログラムを作成できるようになりましょう。