Pythonで現在の日付・時刻を取得する方法!初心者にもわかるdatetime.now()とtoday()
生徒
「Pythonで今の時間や今日の日付を知りたいんですが、どうやって書けばいいんですか?」
先生
「Pythonにはdatetimeというモジュールがあって、now()やtoday()を使えば簡単に現在の時刻や日付を取得できますよ。」
生徒
「それってどういう違いがあるんですか?あと、使い方も教えてほしいです!」
先生
「それじゃあ、datetime.now()とdatetime.today()の違いと、実際の使い方を一緒に見ていきましょう!」
1. Pythonで現在の日時を扱うには?(datetimeモジュールの基本)
Python(パイソン)で「今この瞬間」の日付や時刻を取得したいときは、標準ライブラリのdatetime(デイトタイム)というモジュールを使用します。これは、現実世界のカレンダーや時計のデータをプログラムで扱えるようにするための、非常に便利な「道具箱」のようなものです。
プログラミングが初めての方でも安心してください。Pythonには最初からこの機能が備わっているため、特別なインストール作業は不要です。まず最初に、その道具を使うための「宣言(インポート)」を行う必要があります。
import datetime
# datetimeモジュールが使えるようになったか確認
print("準備完了!")
このimport datetimeという1行を書くだけで、システム時計から正確な「年・月・日」や「時・分・秒」といった情報を自由に取得し、計算や表示に活用できるようになります。例えば、日記アプリの作成や、期限までの残り日数を計算するプログラムなど、実用的な開発には欠かせない第一歩です。
2. datetime.now()で現在の日時(時刻含む)を取得
Pythonで最も頻繁に使われるのが、このdatetime.now()です。これを使うと、現在の「年・月・日」という日付情報だけでなく、「時・分・秒」という詳細な時刻情報まで一気に取得できます。まさに、デジタル時計とカレンダーを同時に確認するようなイメージです。
まずは、一番シンプルな書き方で今の時間を表示させてみましょう。プログラミングが初めての方でも、以下の3行をコピーして実行するだけで、あなたのコンピュータの正確な時刻が表示されますよ。
import datetime
# 今この瞬間の情報を「now」という変数に入れる
now = datetime.datetime.now()
# 画面に表示して確認
print("現在の日時はこちら:", now)
現在の日時はこちら: 2026-02-04 13:05:12.987654
実行結果を見ると、2026-02-04(年月日)と13:05:12.987654(時刻)が半角スペースで区切られて表示されていますね。一番後ろにある「987654」のような細かい数字は「マイクロ秒」と呼ばれ、100万分の1秒単位まで記録されています。非常に精密なデータが取れるのがPythonの特徴です。
このdatetime.now()は、例えば「ユーザーがログインした時刻を記録する」ときや、「SNSの投稿時間を表示する」ときなど、Webアプリやシステム開発の現場で毎日のように使われる必須のテクニックです。
3. datetime.date.today()で日付だけを取得
時刻(時・分・秒)の情報は必要なく、「今日が何月何日かだけを知りたい」という場面も多いですよね。そんな時に最適なのがdatetime.date.today()です。余計な情報が含まれないため、データの管理がしやすく、見た目も非常にスッキリします。
例えば、家計簿アプリで「買い物をした日」を記録したり、カレンダーアプリで「今日の予定」を表示したりする際には、この日付のみを取得する方法がよく使われます。まずは、プログラミング未経験の方でもすぐに試せるシンプルなコードを見てみましょう。
import datetime
# 今日の日付(年月日)だけを取得して「today」という箱に入れる
today = datetime.date.today()
# 画面に表示して確認
print("今日の日付:", today)
今日の日付: 2026-02-04
実行結果を見ると、先ほどのnow()とは違い、時刻が表示されずに2026-02-04という形式だけで出力されています。このように、用途に合わせて「日付のみ」に限定して取得することで、プログラムが読みやすくなり、後の計算(例えば「今日から10日後」を求めるなど)もスムーズに行えるようになります。
事務作業の自動化や、提出期限の管理システムなど、正確な「日付」を扱うあらゆるプログラムの基礎となる重要な機能です。
4. datetime.today()とdatetime.now()の違いとは?
Pythonには、現在の日時を取得する方法としてdatetime.now()のほかに、datetime.today()というよく似た関数が存在します。結論から言うと、初心者の方が普段使いする分には、どちらを使っても同じ結果が得られます。
しかし、厳密には「タイムゾーン(時差)」の扱いにおいて、プログラミング上の小さな違いがあります。まずは、today()を使ったコードの書き方を見てみましょう。
import datetime
# datetime.today()で現在の日時を取得
dt_today = datetime.datetime.today()
print("today()の結果:", dt_today)
today()の結果: 2026-02-04 13:07:45.123456
実行結果を見ると、now()の時と同じように「年月日・時分秒」が表示されますよね。では、なぜ2つの方法があるのでしょうか?
【ここがポイント!】
today()は常に「そのコンピュータが設定されている現在の時刻」を返します。一方で、now()は引数(ひきすう)という設定を追加することで、「今の日本の時間は?」「今のニューヨークの時間は?」といった特定の地域の時間を指定して取得できるという拡張性を持っています。
将来的に、世界中で使われるアプリを作る際にはnow()の柔軟性が役立ちますが、まずは「どちらも今を記録する魔法の言葉」と覚えておけばOKです。迷ったら、より多機能で現場での使用率も高いnow()を使うのがおすすめですよ。
5. 年・月・日・時・分・秒を個別に取り出す方法
datetime.now()で取得したデータには、年、月、日、時、分、秒といった情報がすべてセットで含まれています。しかし、実際のプログラミングでは「生まれた年だけを使いたい」「今の『分』が0分の時だけ処理をしたい」といったように、特定の部分だけを抜き出して使いたい場面がよくあります。
Pythonでは、取得した変数(今回の例ではnow)のあとに.yearや.monthと書き加えるだけで、欲しい情報だけをピンポイントで取り出すことができます。初心者の方でも分かりやすい、具体的なサンプルコードを見てみましょう。
import datetime
# 現在の日時をまるごと取得
now = datetime.datetime.now()
# 必要なパーツだけを個別に取り出して表示
print("今年は西暦", now.year, "年です")
print("現在は", now.month, "月", now.day, "日ですね")
print("時刻の確認:", now.hour, "時", now.minute, "分", now.second, "秒")
このように、ドット(.)でつなぐだけで中身をバラバラに分解できるので、非常に直感的で使いやすいのが特徴です。このテクニックを覚えると、例えば「保存するファイル名に今日の日付を入れる」といった事務作業の自動化や、「特定の時間帯だけ挨拶を変える」といった条件分岐が自由自在に作れるようになります。
取得できる数値はすべて「数値(整数)」として扱われるため、そのまま足し算や引き算などの計算に使えるのも便利なポイントです。
6. 日時を日本語形式で表示するには?(strftimeの使い方)
datetime.now()で取得したデータは、そのまま表示すると「2026-02-04 13:05:12.987654」のような、少し機械的で読みにくい形式になっています。レポートやアプリの画面に表示するなら、「2026年02月04日」のように私たちが普段見慣れている日本語の形式に整えたいですよね。
そんな時に役立つのがstrftime()(ストリング・フォーマット・タイム)というメソッドです。これを使うと、パズルを組み合わせるように、日付の見た目を自由自在にカスタマイズできます。
まずは、最もよく使われる「年月日」と「時刻」を日本語で表示するサンプルコードを見てみましょう。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
# strftimeを使って、表示形式を指定する(%Yや%mは特別な記号です)
formatted_date = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print("フォーマット後の表示:", formatted_date)
フォーマット後の表示: 2026年02月04日 13時05分12秒
コードの中にある%Yや%mといった記号は「書式指定子」と呼ばれます。これらを書き換えるだけで、例えばスラッシュ区切りの「2026/02/04」にしたり、秒を省いて表示したりすることも可能です。
よく使う記号(書式指定子)の一覧:
| 記号 | 意味 | 表示例 |
|---|---|---|
%Y |
西暦(4桁) | 2026 |
%m |
月(0埋め2桁) | 02 |
%d |
日(0埋め2桁) | 04 |
%H |
時(24時間表記) | 13 |
%M |
分(0埋め2桁) | 05 |
%S |
秒(0埋め2桁) | 12 |
初心者のうちは、「%(パーセント)とアルファベットの組み合わせで、日付のパーツを呼び出しているんだな」というイメージで理解しておけばバッチリです。これを使えば、ユーザーに優しい読みやすいプログラムが作れるようになりますよ。
7. Pythonで現在時刻を活用する!日常で使える実践テクニック
ここまで紹介した日時の取得方法は、ただ画面に表示するだけでなく、「もし今の時間が〇時なら、この処理をする」といった条件分岐と組み合わせることで、一気に実用的なプログラムへと進化します。
例えば、朝・昼・晩の時間帯によって、表示される挨拶が自動で変わる「スマートな挨拶ボット」を作ってみましょう。プログラミング未経験の方でも、以下のコードを見れば、時間の数値を使ってコンピュータが判断を下す仕組みがイメージできるはずです。
import datetime
# 今日の「時」の情報だけを取得して、変数 hour に入れる
now = datetime.datetime.now()
hour = now.hour
# もし「22時以降」または「5時未満」なら夜の挨拶を表示
if hour >= 22 or hour < 5:
print("今は" + str(hour) + "時ですね。夜遅くまでお疲れ様です。おやすみなさい!")
# それ以外(日中)なら、元気に挨拶
else:
print("今は" + str(hour) + "時です。今日も一日、プログラミングを楽しみましょう!")
今は14時です。今日も一日、プログラミングを楽しみましょう!
このコードでは、now.hourで取得した「時」のデータが、22以上かどうかを判定しています。このように時間データを活用すれば、「特定の時間になったら自動でメールを送信する」や「深夜帯だけサイトの背景色をダークモードにする」といった、ユーザーの生活リズムに合わせた気の利いた仕組みを簡単に作ることができるようになります。
「今、何時か?」というシンプルな情報が、プログラムに組み込むことで「状況を判断するインテリジェンス」に変わる。これがPythonで日時を扱う最大の魅力です。
8. よくあるエラーと注意点
よくある間違いとして、nowやtodayを直接使ってしまい、エラーになるパターンがあります。必ずdatetime.を前につけるようにしましょう。
# 間違った例(エラーになる)
now = now()
# 正しい例
now = datetime.datetime.now()
また、import datetimeを忘れると、そもそもdatetimeが使えずエラーになります。
9. datetimeの使い方まとめの前に
この記事では、Pythonで現在の日付や時刻を取得する方法としてdatetime.now()やdatetime.date.today()の使い方を詳しく解説しました。初心者でも簡単に使えるように、例えや実例をまじえて丁寧に紹介しました。
今後のプログラム作成や学習に、ぜひ活かしてみてください。
まとめ
Pythonで現在の日時を取得する際に欠かせないdatetimeモジュールについて、この記事全体で学んできた内容を振り返りながら整理していきます。日付や時刻の基礎的な扱い方だけでなく、年月日や時分秒を個別に取り出す方法、日本語形式で整形するためのstrftime、さらには夜間かどうかでメッセージを変える実用的な処理まで、多くの場面で活用できる知識を身につけることができました。特に、datetime.now()とdatetime.today()の違いを理解しておくことは、複雑な時間処理を行う際にも役立ちます。また、datetime.date.today()によって日付だけを簡潔に取得できる仕組みを知ることで、日付管理を行うアプリケーションやスケジュール計算に応用しやすくなります。
Pythonの時間操作では、必要な情報を必要な形に整えて使用することが重要であり、そのために年や月だけを取り出すプロパティの使い方や、printの出力形式を変更するための書式指定が非常に重要になります。とくに日本語形式の日付表記は実務でもよく使用されるため、strftimeの使い方を身につけることでコードの表現力が一段階向上します。また、現在時刻から条件分岐を行うことで、生活に身近な例にも応用できる柔軟なプログラムを作成することができます。
サンプルプログラムまとめ
import datetime
# 現在日時を取得
now = datetime.datetime.now()
# 日本語形式に整形
jp_format = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print("現在の日時(日本語形式):", jp_format)
# 年月日や時分秒を個別に利用
year = now.year
month = now.month
day = now.day
hour = now.hour
print("年:", year)
print("月:", month)
print("日:", day)
print("時:", hour)
# 条件分岐の例
if hour >= 20:
print("夜の時間帯です。ゆっくり休みましょう。")
else:
print("まだ活動できる時間ですね。")
このように、datetimeモジュールの仕組みを理解していくと、日付や時刻を柔軟に扱うための基礎が自然と身につきます。日付の管理やシステムログの記録、時間帯による処理の切り替えなど、プログラムの中で必要とされるさまざまな場面に応用できるため、日常的なプログラミングでも非常に役立ちます。年月日や時刻の取得を正しく理解することで、より正確で信頼性の高いコードを書くことができるようになります。
生徒
「今日学んだdatetimeの使い方、すごく便利でした!特にstrftimeで日本語の形式にできるのが面白かったです。」
先生
「大切なポイントをしっかり理解できていますね。日本語形式の整形は実務でも頻繁に使われますから、自然に書けるようになるととても役立ちますよ。」
生徒
「now()とtoday()の違いも理解できました。最初は混乱していたけど、日時と日付だけで役割が違うんですね。」
先生
「その通りです。用途に合わせて使い分けることで、より正確で読みやすいコードになりますよ。」
生徒
「時間でメッセージを変える例も楽しかったです!自分でも生活リズムに合わせたプログラムを作ってみたいです。」
先生
「とても良い姿勢ですね。datetimeは日常生活に取り入れられる便利なツールですから、ぜひいろいろと試してみてください。」