Python isoformatの使い方

この記事のポイント

Pythonのisoformatメソッドは、日付や時刻をルールに基づいた文字列に変換する機能です。

この記事を読むと、次のようなことが身に付きます。

  • 日付や時刻を国際標準形式の文字列に変換する方法がわかる
  • API(エーピーアイ)連携やデータベースで日付を扱うときの基本が理解できる
  • 日付と時刻の区切り文字を変更する方法がわかる

この記事を通してisoformatメソッドの正しい使い方をマスターすれば、異なるシステム間でも正確に日付データをやり取りできるプログラムが書けるようになります。

目次

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で変換してみます。

from datetime import datetime now = datetime.now() iso_string = now.isoformat() print(iso_string)

出力結果(例)

2025-11-20T11:30:45.123456

※このページ内のコードの出力結果は、実行した時刻により変動します。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります

この例では、datetime.now()で取得した現在の日時情報を持つオブジェクトに対し、isoformat()を実行しています。実行した日時に基づく「年-月-日T時:分:秒.マイクロ秒」という形式の文字列が出力されます。

isoformatメソッドは、引数を使って日付と時刻の間の区切り文字を変更することもできます。以下の例ではスペース(空白)を指定しています。

from datetime import datetime dt = datetime(2024, 1, 15, 14, 30, 45) custom_format = dt.isoformat(sep=' ') print(custom_format)

出力結果

2024-01-15 14:30:45

この例では、datetime(2024, 1, 15, 14, 30, 45)で特定の日時情報を持つオブジェクトを作成しています。isoformat(sep=' ')のように引数sepにスペースを指定したため、出力結果では日付と時刻の区切り文字がスペースになっています。

実用例

isoformatメソッドが実際の開発でどのように使われるのか、具体的な活用例を見ていきましょう。ログの記録や日付だけの管理など、よくある場面を想定した使い方を紹介します。動物の名前を使った分かりやすいデータを用いて、実際の開発現場で応用できる形で解説していきます。これらの例を参考にして、自分のプロジェクトに適した方法を見つけてください。

現在時刻をISO形式で取得

プログラムがいつ実行されたかを記録するために、システムの現在時刻をISO形式の文字列で保存するのはよくある使い方です。ログファイルの作成や、データがいつ更新されたかを示すタイムスタンプとして役立ちます。

from datetime import datetime def log_animal_feeding(): current_time = datetime.now() timestamp = current_time.isoformat() print(f"ネコの餌やり時刻: {timestamp}") return timestamp log_animal_feeding()

出力結果(例)

ネコの餌やり時刻: 2025-11-20T11:15:20.130598

この例では、log_animal_feeding関数の中でdatetime.now()を使って現在の時刻を取得し、すぐにisoformat()で文字列に変換しています。そのため、関数が実行された日時が「ネコの餌やり時刻」としてISO形式で出力されます。

日付のみをISO形式で出力

特定の日付だけを記録する場合のコード例です。 イベントの開催日や動物の誕生日管理などに便利です。

from datetime import date def animal_birthday(): dog_birthday = date(2020, 5, 10) iso_date = dog_birthday.isoformat() print(f"イヌの誕生日: {iso_date}") return iso_date animal_birthday()

出力結果

イヌの誕生日: 2020-05-10

この例では、datetimeではなくdate(2020, 5, 10)を使って日付の情報だけを持つオブジェクトを作成しています。dateオブジェクトに対してisoformat()を使うと、時刻の情報は含まれず、「YYYY-MM-DD」形式の文字列が出力されます。

時刻のみをISO形式で出力

日付は不要で時刻だけを扱いたい場合のパターンです。 動物園の餌やり時間表や定期的なイベントスケジュールに活用できます。

from datetime import time def feeding_schedule(): morning_feed = time(8, 30, 0) iso_time = morning_feed.isoformat() print(f"ウサギの朝食時間: {iso_time}") return iso_time feeding_schedule()

出力結果

ウサギの朝食時間: 08:30:00

この例では、time(8, 30, 0)を使って時刻の情報だけを持つオブジェクトを作成しています。timeオブジェクトに対してisoformat()を使うと、日付の情報は含まれず、「HH:MM:SS」形式の文字列が出力されます。

カスタム区切り文字を使用

基本構文でも触れましたが、sep引数を使うと日付と時刻の間の区切り文字を自由に変更できます。デフォルトの「T」の代わりにスペースなどを使うと、人間にとって読みやすい形式になります。

from datetime import datetime def animal_checkup_record(): checkup_time = datetime(2024, 3, 20, 10, 15, 30) format_space = checkup_time.isoformat(sep=' ') print(f"パンダの健康診断 (スペース区切り): {format_space}") format_underscore = checkup_time.isoformat(sep='_') print(f"パンダの健康診断 (アンダースコア区切り): {format_underscore}") return format_space, format_underscore animal_checkup_record()

出力結果

パンダの健康診断 (スペース区切り): 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通信で重宝される機能です。

from datetime import datetime, timezone, timedelta def international_animal_data(): jst = timezone(timedelta(hours=9)) tokyo_time = datetime(2024, 2, 14, 16, 20, 0, tzinfo=jst) iso_with_tz = tokyo_time.isoformat() print(f"トラの移動記録(東京): {iso_with_tz}") return iso_with_tz international_animal_data()

出力結果

トラの移動記録(東京): 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メソッドをマスターして、より正確で信頼性の高いプログラムを作成できるようになりましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python isoformatの使い方