isoformatとは?
isoformatメソッドとは、Pythonで日付や時刻を扱うdatetimeオブジェクトなどを、ISO 8601という世界共通のルールに基づいた文字列に変換する機能です。
ISO 8601は「国際標準化機構(ISO)」が定めた日付と時刻の表し方に関する国際的な規格で、「YYYY-MM-DDTHH:MM:SS」(年-月-日T時:分:秒)のような形式が基本です。
例えば、国によって「2025/05/20」と書いたり「05/20/2025」と書いたりすると、プログラムが混乱してしまう場合があります。
isoformatメソッドを使って世界共通の形式に統一しておくことで、異なるシステム間でデータをやり取りしたり、データベースに情報を保存したりする際に、日付や時刻を正確に扱えるようになります。
isoformatメソッドの特徴
- datetimeやdate、timeといったオブジェクトをISO 8601形式の文字列に変換する
- 異なるシステムやプログラム間で日付データを交換する際の誤解を防ぐ
- データベースに日付情報を一貫した形式で保存するのに役立つ
- デフォルトでは日付と時刻の間に「T」という文字が区切りとして入る
- 引数(ひきすう)を使って区切り文字を変更することもできる
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
isoformatの基本的な使い方を、具体的なコード例で確認してみましょう。一番シンプルな使い方は、オブジェクト(日付や時刻の情報を持つデータ)に対してisoformat()をそのまま呼び出すだけです。
まずは、現在の時刻を取得してisoformatで変換してみます。
出力結果(例)
2025-11-20T11:30:45.123456※このページ内のコードの出力結果は、実行した時刻により変動します。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります
この例では、datetime.now()で取得した現在の日時情報を持つオブジェクトに対し、isoformat()を実行しています。実行した日時に基づく「年-月-日T時:分:秒.マイクロ秒」という形式の文字列が出力されます。
isoformatメソッドは、引数を使って日付と時刻の間の区切り文字を変更することもできます。以下の例ではスペース(空白)を指定しています。
出力結果
2024-01-15 14:30:45この例では、datetime(2024, 1, 15, 14, 30, 45)で特定の日時情報を持つオブジェクトを作成しています。isoformat(sep=' ')のように引数sepにスペースを指定したため、出力結果では日付と時刻の区切り文字がスペースになっています。
実用例
isoformatメソッドが実際の開発でどのように使われるのか、具体的な活用例を見ていきましょう。ログの記録や日付だけの管理など、よくある場面を想定した使い方を紹介します。動物の名前を使った分かりやすいデータを用いて、実際の開発現場で応用できる形で解説していきます。これらの例を参考にして、自分のプロジェクトに適した方法を見つけてください。
現在時刻をISO形式で取得
プログラムがいつ実行されたかを記録するために、システムの現在時刻をISO形式の文字列で保存するのはよくある使い方です。ログファイルの作成や、データがいつ更新されたかを示すタイムスタンプとして役立ちます。
出力結果(例)
ネコの餌やり時刻: 2025-11-20T11:15:20.130598この例では、log_animal_feeding関数の中でdatetime.now()を使って現在の時刻を取得し、すぐにisoformat()で文字列に変換しています。そのため、関数が実行された日時が「ネコの餌やり時刻」としてISO形式で出力されます。
日付のみをISO形式で出力
特定の日付だけを記録する場合のコード例です。 イベントの開催日や動物の誕生日管理などに便利です。
出力結果
イヌの誕生日: 2020-05-10この例では、datetimeではなくdate(2020, 5, 10)を使って日付の情報だけを持つオブジェクトを作成しています。dateオブジェクトに対してisoformat()を使うと、時刻の情報は含まれず、「YYYY-MM-DD」形式の文字列が出力されます。
時刻のみをISO形式で出力
日付は不要で時刻だけを扱いたい場合のパターンです。 動物園の餌やり時間表や定期的なイベントスケジュールに活用できます。
出力結果
ウサギの朝食時間: 08:30:00この例では、time(8, 30, 0)を使って時刻の情報だけを持つオブジェクトを作成しています。timeオブジェクトに対してisoformat()を使うと、日付の情報は含まれず、「HH:MM:SS」形式の文字列が出力されます。
カスタム区切り文字を使用
基本構文でも触れましたが、sep引数を使うと日付と時刻の間の区切り文字を自由に変更できます。デフォルトの「T」の代わりにスペースなどを使うと、人間にとって読みやすい形式になります。
出力結果
パンダの健康診断 (スペース区切り): 2024-03-20 10:15:30
パンダの健康診断 (アンダースコア区切り): 2024-03-20_10:15:30この例では、checkup_timeというdatetimeオブジェクトに対し、isoformatを2回呼び出しています。
1回目はsep=' '(スペース)を指定したため、日付と時刻の間がスペースで区切られています。2回目はsep='_'(アンダースコア)を指定したため、日付と時刻の間がアンダースコアで区切られています。
sep引数にはこのように、ファイル名などで使いやすい記号や、人間が読みやすいスペースなどを自由に設定できます。
タイムゾーンありの日時変換
システム開発では、時差(タイムゾーン)を考慮する必要がよくあります。timezone(タイムゾーン)オブジェクトを使って日時情報に時差を含めると、isoformatは時差情報も一緒に出力してくれます。国際的なデータベース連携やAPI通信で重宝される機能です。
出力結果
トラの移動記録(東京): 2024-02-14T16:20:00+09:00この例では、timezone(timedelta(hours=9))で日本標準時(JST、協定世界時より9時間進んでいる)の情報を定義しています。datetime作成時にtzinfo=jstでタイムゾーン情報を設定し、isoformat()を実行すると、末尾に「+09:00」という時差情報が付いた文字列が出力されます。
まとめ
Pythonのisoformatメソッドは、日付や時刻のデータを国際標準形式の文字列に変換するための基本的な機能です。この記事では、基本的な使い方から実用例まで解説しました。
isoformatが活躍する場面
- Web API(ウェブ エーピーアイ)で日時データを送受信するとき
- データベースに日付や時刻を統一形式で保存するとき
- ログファイルに正確なタイムスタンプ(実行時刻)を記録するとき
isoformatメソッドを用いる上で、押さえておきたいポイントを覚えておきましょう。
重要なポイント
- 世界共通のルール(ISO 8601)の文字列に変換する
- sep引数で日付と時刻の区切り文字を変更できる
- datetimeだけでなくdateやtimeオブジェクトでも使える
初めてPythonを学ぶ方も、この記事で紹介したisoformatメソッドを実際に書いて、基本的な使い方を試してみてください。
日付や時刻を文字列として正しく扱うコードは、実際の開発で非常に多く使用されます。マスターしておけば役立つこと間違いなしです。
ぜひisoformatメソッドをマスターして、より正確で信頼性の高いプログラムを作成できるようになりましょう。