カテゴリ: Python 更新日: 2025/12/28

Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())

Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())
Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())

先生と生徒の会話形式で理解しよう

生徒

「いまの日時をPythonで取得して表示したいです。どんな方法がありますか?タイムゾーンとか難しそうで不安です。」

先生

「心配いりません。Pythonの標準にはdatetimeという便利な道具があり、まずは国内で普通に使う『今の時刻』を取る方法から学びましょう。タイムゾーンは後で必要になったときに一歩ずつ学べば大丈夫です。」

生徒

「具体的にはどう書くんですか?コードはすぐに試せますか?」

先生

「もちろんです。今回はdatetime.now()date.today()の二つを中心に、初心者にも分かるように丁寧に説明します。」

1. datetimeモジュールとは?初心者向けのイメージ

1. datetimeモジュールとは?初心者向けのイメージ
1. datetimeモジュールとは?初心者向けのイメージ

datetimeはPythonに最初から入っている「日付と時刻」を扱うための道具箱です。電卓やノートのように特別な準備は不要で、すぐに使えます。 日付や時刻を扱うときは、「いつ実行したか」「何日後か」「何時間前か」などを正確に扱えるように、この道具を使います。

一般的に日付は年・月・日で表し、時刻は時・分・秒で表します。datetimeを使うとこれらを組み合わせて一つの「日時オブジェクト」として扱えます。

2. 準備:モジュールの読み込み

2. 準備:モジュールの読み込み
2. 準備:モジュールの読み込み

いきなり難しい設定は不要です。from datetime import datetime, dateと書くだけで、すぐに使えます。 importは、工具箱から必要な工具を取り出す作業だと考えてください。


from datetime import datetime, date

3. 現在の日時を取得する:datetime.now()

3. 現在の日時を取得する:datetime.now()
3. 現在の日時を取得する:datetime.now()

datetime.now()は「今の瞬間」を丸ごと返します。年、月、日、時、分、秒、さらにはマイクロ秒まで含まれるため、細かい時間計測にも使えます。 例えば、処理にかかった時間をログに残したり、ユーザーの操作があった時刻を記録したりするときに便利です。


from datetime import datetime

now = datetime.now()
print(now)

表示はYYYY-MM-DD HH:MM:SS.microの形式になります。人が読みやすい形に整形するには後述のstrftimeを使います。

4. 現在の日付だけを取得する:date.today()

4. 現在の日付だけを取得する:date.today()
4. 現在の日付だけを取得する:date.today()

日付だけでよい場合はdate.today()がシンプルで分かりやすいです。 たとえば「今日の日付を表示する」や「日付だけでファイルを分ける」など、時間の情報が不要な処理に向いています。


from datetime import date

today = date.today()
print(today)

出力はYYYY-MM-DDのようになります。

5. now()とtoday()の具体的な使い分け

5. now()とtoday()の具体的な使い分け
5. now()とtoday()の具体的な使い分け

実務では次のように使い分けます。例えばログファイルに残すなら時刻まで必要なのでnow()、日次の処理やカレンダー表示ならtoday()で十分です。 コードの可読性を高めるために「日付だけ必要なのか」「時刻も必要か」を明確にして使うと良いでしょう。

具体例として、毎朝実行する処理の判定はtoday()で十分ですが、ユーザーがボタンを押した時刻を正確に記録するならnow()が必要です。

6. 表示形式を整える:strftimeの例と注意点

6. 表示形式を整える:strftimeの例と注意点
6. 表示形式を整える:strftimeの例と注意点

strftimeを使えば日時の見た目を自由に変更できます。%Yが年、%mが月、%dが日を表します。日本語の単位を入れて表示することもできます。


from datetime import datetime

now = datetime.now()
print(now.strftime("%Y年%m月%d日 %H時%M分%S秒"))

注意点としては、フォーマット指定子を間違えると期待した結果が得られないことです。英語表記やゼロ埋めの有無などを確認しましょう。

7. 文字列から日時に変換する:strptimeの利用

7. 文字列から日時に変換する:strptimeの利用
7. 文字列から日時に変換する:strptimeの利用

外部から渡された日付文字列をdatetimeオブジェクトに変換するにはstrptimeを使います。これは「文字列を読み取って日時に直す」作業です。


from datetime import datetime

s = "2025-12-09 14:30:00"
dt = datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
print(dt)

この変換ができれば、文字列として受け取った日付を計算に使ったり比較したりできます。

8. 実践例:処理時間の計測やファイル名への活用

8. 実践例:処理時間の計測やファイル名への活用
8. 実践例:処理時間の計測やファイル名への活用

処理の開始と終了の日時を取って差を計算することで、処理時間を把握できます。これはプログラムの性能改善につながります。


from datetime import datetime
start = datetime.now()
# 処理を実行(ここでは待機の例)
end = datetime.now()
elapsed = end - start
print("処理時間:", elapsed)

ファイル名に日時を含めることで、ファイルの作成日時が分かりやすくなります。ハイフンやコロンを避けた形式にするとファイル名として扱いやすいです。

9. タイムゾーンの基本的な注意点と実用的な対処法

9. タイムゾーンの基本的な注意点と実用的な対処法
9. タイムゾーンの基本的な注意点と実用的な対処法

デフォルトではnow()はコンピュータの設定したローカル時間を返します。サーバーとローカルの時間がずれていることがあるため、複数サーバーで動く処理や国際サービスでは注意が必要です。

対処法としては、UTC(協定世界時)で統一して扱う方法があります。Pythonではdatetime.utcnow()やタイムゾーンを扱うライブラリを使ってUTC基準で処理し、表示時に現地時間に変換するのが一般的です。

10. フォーマット指定子の一覧(よく使うもの)

10. フォーマット指定子の一覧(よく使うもの)
10. フォーマット指定子の一覧(よく使うもの)

日時の表示でよく使うフォーマットを覚えておくと便利です。代表的なものをいくつか紹介します。

  • %Y:西暦の年(例:2025)
  • %m:月(01から12)
  • %d:日(01から31)
  • %H:24時間制の時(00から23)
  • %M:分(00から59)
  • %S:秒(00から59)

これらを組み合わせることで、人が読みやすい表示やファイル名に適した表示を作れます。

11. timeモジュールとの違い

11. timeモジュールとの違い
11. timeモジュールとの違い

timeモジュールも時間を扱いますが、主に秒単位の計測や寝かせる(待機する)用途に適しています。日時の取り扱いや表示の自由度はdatetimeの方が高いです。 初心者はまずdatetimeを覚えるとよいでしょう。

12. よくある間違いと対処法

12. よくある間違いと対処法
12. よくある間違いと対処法

初めて使うときに多い間違いは、フォーマットが合っていない文字列をstrptimeに渡してエラーになることです。例外処理でエラーを捕まえてエラーメッセージを見れば原因が分かります。

もう一つはタイムゾーンを無視して比較してしまうことです。ローカル時間とUTCを混在させないように注意しましょう。

13. 練習問題(手を動かして学ぶ)

13. 練習問題(手を動かして学ぶ)
13. 練習問題(手を動かして学ぶ)

次の練習をやってみてください。答えは自分でコードを実行して確認しましょう。

  1. 現在の日時を取得して、日本語フォーマットで表示する。
  2. 文字列で与えられた日時をdatetimeに変換し、1時間後の時刻を表示する。
  3. today()を使って「今日が祝日かどうか」を判定する簡単な処理を作る(祝日リストを用意して判定)。

14. 最後に

14. 最後に
14. 最後に

最初はdatetime.now()で慣れてから、用途に合わせてdate.today()strftimestrptimeを使い分けると実務で役立ちます。 何度も手を動かして出力を確認しながら学ぶのがおすすめです。

カテゴリの一覧へ
新着記事
New1
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New2
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New3
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
New4
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策