【Python】日付と文字列を変換する方法を初心者向けに詳しく解説
はじめに
Pythonでプログラムを書くとき、日付と文字列を変換する作業はとてもよくあります。
たとえば、ログを管理するときや、ファイル名に日付を付与するとき、あるいはユーザーから受け取った文字列の中に日付が含まれる場合など、さまざまな場面で役立つでしょう。
こういった作業を効率よく進めるためには、Python 日付 文字列 変換に関する基本を押さえることが大切です。
本記事では、初心者の方でも理解しやすい言葉を使って、実際の使い方や注意点を解説していきます。
この記事を読むとわかること
- Pythonで日付を文字列に変換する方法
- Pythonで文字列を日付に変換する方法
- 日付変換が役立つ場面と実務での具体例
- エラーを防ぐためのポイント
Pythonで日付を文字列に変換するメリット
まずは、日付を文字列に変換するメリットを考えてみましょう。
単に日付を出力するだけであれば、日付型のオブジェクトをそのまま表示する方法もあります。
しかし、必要に応じてきちんとした整形された文字列にしておくと、次のような利点があります。
読みやすくなる
システムが扱っている日付表現だけでは、人間がぱっと見たときに分かりにくいことがよくあります。
たとえば、2025-02-18
のような形式に統一しておけば、年月日の区切りがはっきりして読みやすいです。
ファイル名やフォルダ名として使える
レポートやバックアップファイルに日付を付けたい場面は多いですよね。
文字列になっていればそのままファイル名に組み込めるため、管理がしやすくなります。
ユーザーへの表示がスムーズ
GUIアプリケーションやWebアプリでユーザーに日付を表示する場合、文字列として整形しておくと、そのままビューに載せるだけで済むことが多いです。
フォーマットを工夫すれば、複数の言語圏や地域向けに表示方法を変更する際も柔軟に対応しやすくなります。
Pythonで日付を文字列に変換する方法
Pythonで日付を文字列に変換するときに、いちばんよく使われるのが datetime
モジュールの strftime
関数です。
名前は「ストリング・フォーマット・タイム」という発音に近いイメージです。
datetime.strftime の基本的な使い方
strftime
関数は、日付や時刻のオブジェクトを受け取って、指定したフォーマット(形式)の文字列に変換してくれます。
まずはサンプルコードを見てみましょう。
from datetime import datetime # 現在の日時を取得 now = datetime.now() # 日付を "YYYY-MM-DD HH:MM:SS" の形式で文字列に変換 formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date)
この例では datetime.now()
で取得した現在の日時を、%Y-%m-%d %H:%M:%S
のフォーマットに沿って文字列に変換しています。
%Y
が西暦4桁の年、%m
が2桁の月、%d
が2桁の日付、%H
が24時間表記の時、%M
が分、%S
が秒をそれぞれ示します。
なお、変換後の文字列は formatted_date
に代入されているので、他の処理にまわしたり、ファイル名に使ったりできます。
実務での具体的な活用シーン
たとえば、業務システムで毎日生成するレポートファイルに日付を入れたいケースがあります。
以下のようにすれば、ファイル名の重複を防ぎつつ、後で見返したときもどのタイミングのデータかすぐにわかるでしょう。
from datetime import datetime import os current_time = datetime.now() date_str = current_time.strftime("%Y%m%d") report_filename = f"sales_report_{date_str}.csv" # CSVファイルを生成すると仮定 with open(report_filename, "w", encoding="utf-8") as f: f.write("売上データをここに書き込む")
このように、文字列としての日時をファイル名に加えると、ファイルの管理がぐっとやりやすくなります。
日時の形式を変えるときは、フォーマット指定子(%Y や %m など)を変更すればOKです。
用途に応じて、文字だけで区切る・ハイフンで区切る・スラッシュを使うなど、表記の統一を意識すると良いでしょう。
Pythonで文字列を日付に変換する方法
一方、外部システムやユーザー入力から受け取った文字列を日付として扱いたい場合も多くあります。
このときに役立つのが、datetime
モジュールの strptime
関数です。
「ストリング・パース・タイム」というイメージで覚えておくと、使いやすいでしょう。
datetime.strptime の基本的な使い方
strptime
は、文字列とフォーマットを受け取り、それを datetime
オブジェクトにして返します。
サンプルコードで確認してみましょう。
from datetime import datetime date_str = "2025-02-18 14:30:00" date_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") print(date_obj)
このコードでは date_str
に格納されている "2025-02-18 14:30:00"
を、%Y-%m-%d %H:%M:%S
というフォーマットに当てはめて解析します。
フォーマットが一致すれば、年月日と時刻の情報を含む datetime
オブジェクトが得られます。
コード内で得られる date_obj
は、日付型として加減算などの操作が可能です。
たとえば、「1週間後の日付を取得したい」という場合は、timedelta
などを使うことで簡単に日付演算を行えます。
実務でよくある用途
ユーザーがWebフォームなどに日付を入力する場合や、CSVファイルに日付が文字列で記録されているケースは非常に一般的です。
以下のようなイメージで、受け取った文字列の日付を計算処理や分析に回すことが可能になります。
from datetime import datetime, timedelta # CSVやフォーム入力から取得した文字列と仮定 date_str = "2025/02/18" # 受け取る文字列の形式に合わせてフォーマットを指定 date_obj = datetime.strptime(date_str, "%Y/%m/%d") # 7日後の日付を計算 one_week_later = date_obj + timedelta(days=7) # 文字列として改めて表示 print(one_week_later.strftime("%Y-%m-%d"))
フォーマットさえ間違えなければ、データを日付型として扱えるため、集計や比較といった処理をスムーズに進められるでしょう。
よく使う日付フォーマット指定子の例
ここで、日付や時刻を文字列に変換するとき、あるいは文字列から日付を取り出すときに使うフォーマット指定子をまとめておきます。
Pythonの strftime
と strptime
でよく使われるものをいくつかピックアップしてみましょう。
%Y
:4桁の年(例:2025)%m
:2桁の月(例:02)%d
:2桁の日付(例:18)%H
:24時間表記の時(例:14)%M
:分(例:30)%S
:秒(例:00)%Y/%m/%d
:スラッシュで区切った日付(例:2025/02/18)%y
:2桁の年(例:25)%I
:12時間表記の時(例:02)%p
:AM/PM 表示(例:PM)
実際には、これらを組み合わせて自由にフォーマットを作れるのが便利なポイントです。
たとえば "%Y-%m-%d"
で年・月・日をハイフン区切りにしたり、"%m/%d/%Y"
のように月/日/年の順番に並べたりできます。
文字列の形式が実際のデータと一致しないと、変換時にエラーが発生することがあります。
入力データの形式が常に一定であるか、あるいは想定と異なる場合にどのように対処するのかを検討しましょう。
日付と文字列の相互変換で気をつけたいポイント
タイムゾーンや夏時間の問題
初心者向けの段階では、タイムゾーンや夏時間(DST)の扱いまでは手が回らないかもしれません。
ただ、国際的な日付処理を行う場合や、サーバーが外国にある場合などは、タイムゾーンを意識する必要があります。
気がつかないうちに時刻がずれてしまうと、後々トラブルにつながることもあるので注意しましょう。
データ形式のバラつきに備える
実務では、文字列の日付形式がプロジェクトやシステムによってバラバラなケースがあります。
あるシステムでは YYYY/MM/DD
、別のシステムでは YYYY-MM-DD
、また別のところでは MM-DD-YYYY
といった具合です。
同じフォーマットで統一するのが理想ですが、難しい場合もあるため、その都度対応できるように心がけましょう。
過去や未来の日付でのエラー
strptime
を使う場合、年号部分があり得ない数値(例:99999年)だとエラーが発生する可能性があります。
外部の入力データに対しては、受け取った文字列が正しい形式かどうかをチェックする仕組みを用意することが重要です。
実務で役立つ活用アイデア
ここでは、Pythonの日付と文字列変換が業務にどう活きるか、もう少し踏み込んで紹介します。
現場では、多くの処理が“とある日時”に基づいて実行されるため、その時点の情報をしっかり文字列化して保管することが大きな意味を持つのです。
ロギングや監査ログ
サーバーがエラーを起こしたとき、そのタイミングを正確に記録しておけば原因の追跡がしやすくなります。
あらゆるイベントに対して「いつ起きたのか」を添えておくことで、後から振り返る際の大きな手がかりになるでしょう。
レポートや可視化ツールへの連携
ビジネスレポートなどを自動生成するとき、日付を整理しておくと集計や可視化ツールとの連携が簡単になります。
たとえば、翌週の予定をまとめたり、前月の売上集計を取り出したりするときに、日付の並びをそのままにしておけるのは便利です。
スケジューリングや自動化タスク
指定した日付や時刻にスクリプトを動かしたい場合、文字列として指定する場面と実際の日時計算を行う場面があります。
コード内で datetime
オブジェクトを利用できれば、複雑な日付計算も対応しやすいでしょう。
まとめ
Pythonでの日付と文字列の変換は、初心者にとっても取り組みやすいトピックです。
datetime
モジュールの strftime
と strptime
を押さえておけば、日付を自由に整形し、文字列として扱うことができます。
逆に、文字列から日時を取得する際も、同じモジュールでほとんど完結するため、とても扱いやすいです。
データの保管やレポート作成、あるいはユーザー入力の解析など、実務でも頻出する場面がたくさんあります。
今回の解説やサンプルコードを参考にしながら、ぜひ日々のプログラミング作業に役立ててみてください。