Pythonで時間のフォーマットをISO 8601に変換する方法をやさしく解説|初心者向け日時操作入門
生徒
「Pythonで今の時間を扱いたいんですが、表示の仕方がよくわかりません…」
先生
「Pythonでは日時を扱う仕組みが用意されていて、世界共通の形に変換することもできますよ。」
生徒
「世界共通の形って、どういう意味ですか?」
先生
「それがISO 8601という時間のフォーマットです。順番に見ていきましょう。」
1. Pythonで日時を扱うとはどういうこと?
Pythonでは、日付や時間を数字の集まりとしてではなく、特別なデータとして扱います。たとえば「2026年1月23日10時30分」という情報を、一つのまとまりとして管理できます。これにより、時間の計算や表示の変更が簡単になります。
パソコンを時計だと考えてください。時計は「今が何時何分か」を正確に知っています。Pythonも同じように、今の日時を知ったり、表示の形を変えたりできるのです。
2. ISO 8601とは何かを超かんたんに説明
ISO 8601とは、日付と時間の書き方を世界で統一したルールです。国によって「年/月/日」や「日-月-年」など書き方が違うと混乱します。そのため「年-月-日 時:分:秒」という決まった形を使います。
例として、2026年1月23日の午前9時は「2026-01-23T09:00:00」と書きます。この「T」は日付と時間の区切りを表す記号です。
3. Pythonで現在の日時を取得する基本
まずは、Pythonで今の日時を取得します。ここではdatetimeという仕組みを使います。これは「日付と時間を扱うための道具箱」のようなものです。
from datetime import datetime
now = datetime.now()
print(now)
2026-01-23 10:30:15.123456
この表示はPython独自の形式で、人には少し見づらいことがあります。そこでISO 8601形式に変換します。
4. ISO 8601形式に変換する一番かんたんな方法
Pythonには、ISO 8601に変換するための便利な機能があります。それがisoformat()です。これは「ISO形式で表示する」という意味を持ちます。
from datetime import datetime
now = datetime.now()
iso_time = now.isoformat()
print(iso_time)
2026-01-23T10:30:15.123456
これで、Pythonの日時をISO 8601フォーマットに変換できました。難しい設定は一切不要です。
5. 秒や小数を省いたISO 8601表示
場合によっては、秒や細かい数字が不要なこともあります。そのときは、表示の形を指定できます。ここで使うstrftimeは「時間の並びを自由に決める方法」です。
from datetime import datetime
now = datetime.now()
formatted = now.strftime("%Y-%m-%dT%H:%M")
print(formatted)
2026-01-23T10:30
%Yは年、%mは月、%dは日を意味します。暗号のように見えますが、慣れると地図記号のように読めるようになります。
6. 文字列の日付をISO 8601に直す方法
すでに文字として保存されている日付を、ISO 8601形式に変換したいこともあります。たとえば「2026/01/23 10:30」という文字です。
from datetime import datetime
text = "2026/01/23 10:30"
dt = datetime.strptime(text, "%Y/%m/%d %H:%M")
print(dt.isoformat())
2026-01-23T10:30:00
strptimeは「文字を時間に変換する」という意味です。紙に書いた予定表を、時計にセットするイメージです。
7. ISO 8601がよく使われる理由
ISO 8601形式は、Webサービス、API、データベースなどで広く使われています。理由は、並び替えがしやすく、国や言語が違っても誤解が起きにくいからです。
PythonでISO 8601に変換できるようになると、ログ管理やデータ保存がとても楽になります。初心者のうちから覚えておくと安心です。
8. 初心者がつまずきやすいポイント
よくある間違いは、文字列と日時データを混同してしまうことです。見た目が同じでも、中身が違うと操作できません。
「これは文字なのか」「これは日時なのか」を意識するだけで、Pythonの日時操作はぐっと理解しやすくなります。