Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())
生徒
「いまの日時をPythonで取得して表示したいです。どんな方法がありますか?タイムゾーンとか難しそうで不安です。」
先生
「心配いりません。Pythonの標準にはdatetimeという便利な道具があり、まずは国内で普通に使う『今の時刻』を取る方法から学びましょう。タイムゾーンは後で必要になったときに一歩ずつ学べば大丈夫です。」
生徒
「具体的にはどう書くんですか?コードはすぐに試せますか?」
先生
「もちろんです。今回はdatetime.now()とdate.today()の二つを中心に、初心者にも分かるように丁寧に説明します。」
1. datetimeモジュールとは?初心者向けのイメージ
datetimeはPythonに最初から入っている「日付と時刻」を扱うための道具箱です。電卓やノートのように特別な準備は不要で、すぐに使えます。
日付や時刻を扱うときは、「いつ実行したか」「何日後か」「何時間前か」などを正確に扱えるように、この道具を使います。
一般的に日付は年・月・日で表し、時刻は時・分・秒で表します。datetimeを使うとこれらを組み合わせて一つの「日時オブジェクト」として扱えます。
例えば「2026年3月27日 10時30分」のような情報を一つのまとまりとして管理できるため、比較や計算も簡単になります。
from datetime import datetime
now = datetime.now()
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("時:", now.hour)
このように、取得した日時は「年だけ」「月だけ」といった形で簡単に取り出すこともできます。初心者の方はまず「現在の日時を取得して表示する」ことから始めると理解しやすく、その後に計算や比較へとステップアップしていくのがおすすめです。
2. 準備:モジュールの読み込み
Pythonで現在の日付や時刻を取得するには、最初にdatetimeモジュールを読み込む必要があります。難しい設定は一切なく、from datetime import datetime, dateと1行書くだけで準備完了です。
importは、必要な機能をプログラムに取り込むための基本操作であり、「工具箱から必要な道具だけを取り出すイメージ」で覚えると分かりやすいです。
ここでdatetimeは「日時(年・月・日・時・分・秒)」を扱うための機能、dateは「日付(年・月・日)」だけを扱う機能です。用途に応じて使い分けることで、シンプルで読みやすいコードを書くことができます。
初心者の方は、まずこの2つをセットで覚えておくと、日付処理の理解がスムーズになります。
from datetime import datetime, date
# 現在の日時を取得
now = datetime.now()
# 今日の日付を取得
today = date.today()
print(now)
print(today)
このように、モジュールを読み込むだけで「現在の日時」や「今日の日付」をすぐに取得できます。まずはコードをそのまま実行して、どのような値が表示されるか確認してみましょう。 実際に動かしながら学ぶことで、Pythonの日付・時刻処理に自然と慣れていくことができます。
3. 現在の日時を取得する:datetime.now()
datetime.now()は「今この瞬間の日時」をまとめて取得できる便利なメソッドです。年、月、日、時、分、秒に加えてマイクロ秒まで含まれるため、正確な時刻を扱いたい場面でよく使われます。
ログの記録や、ユーザーの操作タイミングの保存、処理の実行タイミングの確認など、実務でも頻繁に登場する基本機能です。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# そのまま表示
print(now)
上記のコードを実行すると、現在の日時がそのまま表示されます。例えば「2026-03-27 10:30:15.123456」のように表示されます。 この形式はプログラム向けの標準的な表現で、後から日付や時刻ごとに分けて扱うこともできます。
from datetime import datetime
now = datetime.now()
# 日付と時刻をそれぞれ取り出す例
print("年:", now.year)
print("月:", now.month)
print("日:", now.day)
print("時:", now.hour)
print("分:", now.minute)
このように、取得した日時は細かく分解して使うこともできます。まずは「現在の日時を取得して表示する」という基本をしっかり押さえることで、後の日時計算や比較処理の理解がスムーズになります。
4. 現在の日付だけを取得する:date.today()
日付だけでよい場合はdate.today()がシンプルで分かりやすいです。
たとえば「今日の日付を表示する」や「日付だけでファイルを分ける」など、時間の情報が不要な処理に向いています。
「時刻はいらないけど日付は必要」という場面では、この方法を使うことでコードがスッキリし、初心者でも読みやすいプログラムになります。
from datetime import date
# 今日の日付を取得
today = date.today()
# そのまま表示
print(today)
出力はYYYY-MM-DDのような形式になります。例えば「2026-03-27」と表示されます。
この形式はデータ処理やファイル管理でよく使われる標準的な日付形式です。
from datetime import date
today = date.today()
# 年・月・日をそれぞれ取り出す
print("年:", today.year)
print("月:", today.month)
print("日:", today.day)
このように、取得した日付から「年だけ」「月だけ」といった情報を簡単に取り出すこともできます。 まずは日付を取得して表示するところから始めて、徐々に使い方に慣れていくのがおすすめです。
5. now()とtoday()の具体的な使い分け
実務では次のように使い分けます。例えばログファイルに残すなら時刻まで必要なのでnow()、日次の処理やカレンダー表示ならtoday()で十分です。
コードの可読性を高めるために「日付だけ必要なのか」「時刻も必要か」を明確にして使うと良いでしょう。用途に応じて使い分けることで、無駄のないシンプルなプログラムになります。
from datetime import datetime, date
# 現在の日時(時刻まで必要な場合)
now = datetime.now()
print("現在の日時:", now)
# 今日の日付だけ(時刻が不要な場合)
today = date.today()
print("今日の日付:", today)
具体例として、毎朝実行する処理の判定はtoday()で十分ですが、ユーザーがボタンを押した時刻を正確に記録するならnow()が必要です。
また、「日付でファイルを分ける」「日単位でデータを集計する」といった処理ではtoday()が分かりやすく、ログや履歴管理のように「何時に起きたか」が重要な場合はnow()を使うのが基本です。
6. 表示形式を整える:strftimeの例と注意点
strftimeを使えば、Pythonで取得した日時を「見やすい形式」に自由に変換できます。たとえば、%Yは年、%mは月、%dは日を意味し、組み合わせることで「2026年03月27日」のように表示できます。日本語の単位を入れることで、画面表示や帳票出力にもそのまま使える便利な形式になります。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# 日本語形式で表示
print(now.strftime("%Y年%m月%d日 %H時%M分%S秒"))
さらに初心者の方は、まずは日付だけ、時刻だけといったシンプルな形式から試してみると理解しやすいです。必要に応じて徐々に組み合わせを増やしていくのがおすすめです。
from datetime import datetime
now = datetime.now()
# 日付だけ表示
print(now.strftime("%Y-%m-%d"))
# 時刻だけ表示
print(now.strftime("%H:%M:%S"))
注意点として、フォーマット指定子を間違えると意図しない結果になります。たとえば%mと%Mは見た目が似ていますが、前者は「月」、後者は「分」を表します。また、%dはゼロ埋めされるため「01」のように表示されます。こうした違いを意識して使うことで、正確で読みやすい日時表示ができるようになります。
7. 文字列から日時に変換する:strptimeの利用
外部から渡された日付文字列をdatetimeオブジェクトに変換するにはstrptimeを使います。これは「文字列を読み取って日時に直す」作業で、CSVファイルやユーザー入力など、文字列として扱われている日時データをプログラムで利用できる形に変換するために重要な基本テクニックです。
from datetime import datetime
s = "2025-12-09 14:30:00"
dt = datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
print(dt)
上記のように、文字列の形式とフォーマット指定子を一致させることで正しく変換できます。もし形式が一致しない場合はエラーになるため、「文字列の形」と「指定する書式」が同じであることを意識するのがポイントです。
from datetime import datetime
# 日付だけの文字列を変換する例
s = "2025-12-09"
dt = datetime.strptime(s, "%Y-%m-%d")
print("変換後:", dt)
print("年:", dt.year)
このように変換しておくことで、日時の比較や計算ができるようになります。例えば「どちらが新しい日付か」を判定したり、「何日差があるか」を求めたりする処理に応用できます。まずはシンプルな文字列から試して、徐々に使い方に慣れていきましょう。
8. 実践例:処理時間の計測やファイル名への活用
処理の開始と終了の日時をそれぞれ取得し、その差を計算することで処理時間を確認できます。これは「どのくらい時間がかかっているのか」を把握するために非常に重要で、処理の遅い原因を見つけたり、プログラムの改善(パフォーマンスチューニング)に役立ちます。初心者の方はまず「開始と終了を記録して差を出す」というシンプルな流れを覚えるのがおすすめです。
from datetime import datetime
# 処理開始時刻を記録
start = datetime.now()
# ここに実際の処理を書く(例:ループなど)
for i in range(1000000):
pass
# 処理終了時刻を記録
end = datetime.now()
# 処理時間を計算
elapsed = end - start
print("処理時間:", elapsed)
また、現在の日時をファイル名に含めることで「いつ作成されたファイルか」が一目で分かるようになります。ログファイルやバックアップファイルを管理するときに非常に便利です。特に日付ごとにファイルを分けたい場合や、上書きを防ぎたい場合に役立つ実践テクニックです。
from datetime import datetime
# 現在の日時を取得
now = datetime.now()
# ファイル名に使いやすい形式に変換(コロンは使わない)
filename = now.strftime("log_%Y%m%d_%H%M%S.txt")
print("作成するファイル名:", filename)
このように、日時を活用することで「処理の見える化」や「ファイル管理の効率化」が簡単に実現できます。実務でもよく使われる基本テクニックなので、ぜひ手を動かして試してみてください。
9. タイムゾーンの基本的な注意点と実用的な対処法
デフォルトではnow()はコンピュータに設定されているローカル時間を返します。自分のパソコンで動かす場合は問題になりにくいですが、サーバーで実行するプログラムや複数の環境で動くシステムでは、時間のズレが原因で不具合が発生することがあります。特にログの記録やデータの比較を行う場合は、時間の基準を意識することがとても重要です。
実務では「UTC(協定世界時)」を基準にして日時を管理し、画面表示などのときだけ日本時間などに変換する方法がよく使われます。Pythonではdatetime.utcnow()を使うことでUTCの現在時刻を取得できます。まずは「ローカル時間とUTCがある」という違いを理解しておくことが、タイムゾーン対策の第一歩です。
from datetime import datetime
# ローカル時間(自分のパソコンの時間)
local_now = datetime.now()
# UTC時間(世界共通の基準時間)
utc_now = datetime.utcnow()
print("ローカル時間:", local_now)
print("UTC時間:", utc_now)
上記のコードを実行すると、ローカル時間とUTC時間の差を確認できます。日本の場合は通常9時間の差があります。この違いを知らずにデータを扱うと「時間がずれている」「順番がおかしい」といった問題が発生するため、まずは実際に動かして違いを体験してみることをおすすめします。
10. フォーマット指定子の一覧(よく使うもの)
日時の表示でよく使うフォーマットを覚えておくと便利です。代表的なものをいくつか紹介します。
%Y:西暦の年(例:2025)%m:月(01から12)%d:日(01から31)%H:24時間制の時(00から23)%M:分(00から59)%S:秒(00から59)
これらを組み合わせることで、人が読みやすい表示やファイル名に適した表示を作れます。
11. timeモジュールとの違い
timeモジュールも時間を扱いますが、主に秒単位の計測や寝かせる(待機する)用途に適しています。日時の取り扱いや表示の自由度はdatetimeの方が高いです。
初心者はまずdatetimeを覚えるとよいでしょう。
12. よくある間違いと対処法
初めて使うときに多い間違いは、フォーマットが合っていない文字列をstrptimeに渡してエラーになることです。例外処理でエラーを捕まえてエラーメッセージを見れば原因が分かります。
もう一つはタイムゾーンを無視して比較してしまうことです。ローカル時間とUTCを混在させないように注意しましょう。
13. 練習問題(手を動かして学ぶ)
次の練習をやってみてください。答えは自分でコードを実行して確認しましょう。
- 現在の日時を取得して、日本語フォーマットで表示する。
- 文字列で与えられた日時をdatetimeに変換し、1時間後の時刻を表示する。
- today()を使って「今日が祝日かどうか」を判定する簡単な処理を作る(祝日リストを用意して判定)。
14. 最後に
最初はdatetime.now()で慣れてから、用途に合わせてdate.today()やstrftime、strptimeを使い分けると実務で役立ちます。
何度も手を動かして出力を確認しながら学ぶのがおすすめです。
まとめ
Pythonで現在の日付と時刻を取得する基本の振り返り
この記事ではPythonで現在の日付や現在の時刻を取得する方法としてdatetimeモジュールを中心に学びました。Pythonのdatetimeモジュールは日付処理や時刻処理を扱うための標準機能であり追加のライブラリをインストールする必要がなくすぐに利用できる便利な機能です。Python初心者が日付処理を学ぶとき最初に理解しておきたいのがdatetime.nowとdate.todayという二つの基本的な関数です。
datetime.nowは現在の日時を取得するための代表的な方法であり年 月 日 時 分 秒といった情報をまとめて取得できます。ログ記録やデータの更新時間の保存など多くの場面で利用されます。特にPythonでシステムログを記録するプログラムやユーザー操作の履歴を保存するプログラムを作る場合には現在の時刻を正確に取得する必要があります。そのためdatetime.nowはPythonプログラミングの中でも非常によく使われる基本機能の一つです。
一方でdate.todayは現在の日付だけを取得するためのシンプルな方法です。時刻情報が不要な場合にはこの方法を使うことでコードが読みやすくなります。例えば今日の日付を表示する処理や日付単位でデータを保存する処理ではdate.todayが便利です。Pythonの日付処理では用途に応じてdatetime.nowとdate.todayを使い分けることが重要になります。
datetimeモジュールの重要なポイント
Pythonのdatetimeモジュールを理解するうえで大切なのは日時を一つのオブジェクトとして扱うという考え方です。datetimeオブジェクトには年 月 日 時 分 秒などの情報がまとめて含まれているためそのまま表示することもできますし特定の部分だけ取り出すこともできます。また日時同士を比較したり差を計算したりすることもできます。このような柔軟な処理ができるためPythonでは多くのシステム開発やデータ処理でdatetimeが使われています。
さらにstrftimeを利用すると日時の表示形式を自由に変更できます。例えば日本語の年月日形式で表示したりファイル名に使いやすい形式に変換したりすることが可能です。プログラムで日時を扱う場合そのまま表示するだけではなく人が読みやすい形式に整形することも大切です。strftimeを覚えておくことでPythonの日時処理はより実用的になります。
実務で役立つ日時処理の活用例
Pythonで現在の日付や時刻を取得する技術は実務でも多くの場面で利用されます。例えばプログラムの実行時間を計測する処理やログファイルの作成日時の記録データの更新履歴の管理などさまざまな用途があります。特にデータ分析や自動処理のスクリプトでは処理を実行した日時を保存しておくことで後から確認することができます。
またバックアップ処理などではファイル名に日時を含めることで複数のファイルを整理しやすくなります。例えば年月日時分秒を組み合わせた文字列を作成すれば同じ名前のファイルが上書きされることを防ぐことができます。このような処理はPythonのdatetime機能を利用することで簡単に実装できます。
サンプルプログラム 現在の日時を取得する基本例
from datetime import datetime
now = datetime.now()
print("現在の日時")
print(now)
現在の日時
2026-03-27 10:15:30.123456
このようにdatetime.nowを利用することでPythonでは簡単に現在の日時を取得することができます。取得した値はdatetimeオブジェクトとして扱われるため後から日時計算やフォーマット変換を行うこともできます。
サンプルプログラム 日本語形式で日時を表示する例
from datetime import datetime
now = datetime.now()
text = now.strftime("%Y年%m月%d日 %H時%M分%S秒")
print(text)
2026年03月27日 10時15分30秒
このようにstrftimeを使うことで日時の表示形式を自由に変更できます。日本語表示を行うことでユーザーにとって分かりやすい画面を作ることも可能になります。Pythonの日時フォーマットはデータ表示だけでなくファイル管理やログ記録にも活用できる重要な技術です。
処理時間を測定する実践サンプル
from datetime import datetime
start = datetime.now()
for i in range(3):
print("処理中")
end = datetime.now()
elapsed = end - start
print("処理時間")
print(elapsed)
処理中
処理中
処理中
処理時間
0:00:00.002100
このように開始時間と終了時間を取得することでプログラムの処理時間を確認することができます。パフォーマンス改善や処理の最適化を行う際にも役立つ重要なテクニックです。Pythonで自動処理スクリプトやデータ処理プログラムを作る場合にはこのような時間計測の方法を覚えておくと非常に便利です。
生徒
今日の記事でPythonで現在の日付や現在の時刻を取得する方法がよく分かりました。特にdatetime.nowを使うと簡単に現在の日時を取得できるということが理解できました。
先生
その通りです。Pythonのdatetimeモジュールは日付処理や時刻処理を行うための基本機能です。まずはdatetime.nowで現在の日時を取得できるようになることが大切です。
生徒
日付だけ必要な場合はdate.todayを使うと良いということも覚えました。用途によって使い分けることが重要なのですね。
先生
その理解で正しいです。さらにstrftimeを使えば表示形式を自由に変えることができます。ユーザーにとって読みやすい表示を作ることもプログラム開発では大切です。
生徒
処理時間を計測する方法もとても参考になりました。開始時間と終了時間を取得して差を計算するだけで処理時間が分かるのですね。
先生
その通りです。Pythonでログ管理や自動処理プログラムを作るときには日時処理が必ず登場します。今回学んだdatetime.now date.today strftimeの三つをしっかり覚えておけば多くの場面で応用できます。
生徒
これからPythonのプログラムを書くときは現在の日時を取得したりログに時刻を記録したりして実際に使いながら理解を深めていきたいと思います。
先生
それが一番良い学習方法です。何度もコードを書いて動かすことでPythonの日付処理や時刻処理は自然に身についていきます。ぜひ今回のサンプルコードを参考にして自分でもいろいろなプログラムを作ってみてください。