Pythonでプログラミングをしていると、日付や時刻を扱う場面が必ず出てきます。たとえばファイル名にタイムスタンプを付けたり、システムのログを解析したりする場合です。本記事では、datetime
モジュールを使った日付と時刻の扱い方を初心者向けに解説します。
datetimeモジュールとは?
datetime
モジュールは、Pythonの標準ライブラリのひとつです。日付や時刻を扱うための便利なクラスや関数が用意されており、追加のインストールは不要です。つまり、Pythonをインストールしたらすぐに使えます。主にdate
、time
、datetime
、timedelta
の4つが中心的に使われます。
import datetime
# 現在の日時を取得
now = datetime.datetime.now()
print(now)
上記のコードを実行すると、現在の日時が「2025-08-22 12:34:56.789123」のように出力されます。このように簡単に現在時刻を取得できるのが魅力です。
現在の日付と時刻を取得する方法
最も基本的な操作は「今の日時」を取得することです。これはdatetime.now()
を使います。また、日付だけ、または時刻だけを取得する方法も知っておくと便利です。
from datetime import datetime
now = datetime.now()
print("現在日時:", now)
print("日付のみ:", now.date())
print("時刻のみ:", now.time())
このように、必要に応じて日付と時刻を分けて利用できます。例えば、ログの記録では日付だけ保存するケースもありますし、スケジュール管理では時刻が重要になるケースもあります。
日付や時刻を指定して作成する
実務では、現在時刻だけでなく「特定の日付や時刻」を扱うことも多いです。その場合は、datetime
オブジェクトを直接生成します。
from datetime import datetime
dt = datetime(2025, 12, 31, 23, 59, 59)
print("指定日時:", dt)
このコードでは「2025年12月31日 23:59:59」を作成しています。年、月、日、時、分、秒を順に指定します。省略すればデフォルトで0が補われるため、柔軟に利用できます。
日付と時刻のフォーマットを変更する
プログラムで扱うだけでなく、人に見せるために「見やすい形式」に変換することも重要です。その際はstrftime()
を使います。
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y/%m/%d %H:%M:%S"))
print(now.strftime("%A, %B %d, %Y"))
%Y
は西暦、%m
は月、%d
は日、%H
は24時間表記の時を表します。柔軟にカスタマイズできるため、用途に応じた出力が可能です。
文字列から日付を作成する(strptime)
外部ファイルやユーザー入力から日付を受け取る場合は、文字列をdatetime
型に変換する必要があります。そこで便利なのがstrptime()
です。
from datetime import datetime
date_str = "2025-08-22 15:30:00"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print("変換結果:", dt)
この方法を知っておくと、CSVやログ解析など外部データの処理に大いに役立ちます。
日付や時刻の計算をする(timedelta)
次に紹介するのは日付計算です。例えば「7日後の日付」や「3時間前の時刻」を求めたいときは、timedelta
を使います。
from datetime import datetime, timedelta
now = datetime.now()
future = now + timedelta(days=7)
past = now - timedelta(hours=3)
print("1週間後:", future)
print("3時間前:", past)
このようにtimedelta
を使えば、シンプルに日付や時刻の加算・減算ができます。スケジューリングや有効期限の計算でよく使われるテクニックです。
タイムゾーンを扱う
グローバルなサービスを開発するときに避けて通れないのが「タイムゾーン」です。Pythonのdatetime
はデフォルトでタイムゾーン情報を持ちません。しかし、pytz
ライブラリを使えば簡単に扱えます。
from datetime import datetime
import pytz
tokyo = pytz.timezone("Asia/Tokyo")
ny = pytz.timezone("America/New_York")
now = datetime.now(tokyo)
print("東京:", now)
print("ニューヨーク:", now.astimezone(ny))
国際的なアプリケーションでは必須の知識です。ユーザーごとに適切な時刻を表示できるようになります。
応用テクニック
ファイル名に日付を埋め込む
プログラムでログやバックアップを作成するとき、ファイル名に日付を入れると管理がしやすくなります。
from datetime import datetime
filename = datetime.now().strftime("backup_%Y%m%d_%H%M%S.txt")
print(filename)
これにより「backup_20250822_153000.txt」のような形式でファイルを保存できます。日付入りのファイル名は衝突防止にも役立ちます。
日付の差を計算する
二つの日付の差を求めるときも便利です。例えば、締め切りまでの日数を計算する場合です。
from datetime import datetime
d1 = datetime(2025, 8, 22)
d2 = datetime(2025, 12, 31)
diff = d2 - d1
print("残り日数:", diff.days)
この方法はカレンダー機能やタスク管理アプリでよく使われます。
よくあるエラーと注意点
タイムゾーン未対応の落とし穴
タイムゾーンを意識せずにシステムを作ると、国際利用時に混乱します。とくにサーバー時刻とユーザー表示時刻がずれるケースが多いので注意が必要です。
フォーマットの違いによるエラー
strptime()
を使うとき、フォーマット文字列が実際の入力と一致しないとエラーになります。入力データの形式を確認してから実装しましょう。
より詳しく学びたい方は公式ドキュメントも参考にしてください。
Python公式ドキュメント: datetimeモジュール
Python初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富なPython講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験やPythonの知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
Pythonのdatetime
モジュールを使えば、日付と時刻の取得・変換・計算を直感的に扱えます。基礎を押さえれば、実務でも役立つ強力な武器となるでしょう。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント