Claude Codeでタイムゾーンと時刻表示形式を設定する方法
settings.jsonのtimeFormatとtimeZoneで、ターン終了時刻と文字起こしビューアーの時刻表示を12/24時間表記や別タイムゾーンに変える設定方法です。
timeFormat/timeZoneとは
timeFormatとtimeZoneは、Claude Codeのインターフェースが表示する時刻の書式とタイムゾーンを、settings.jsonから個別に設定するキーです。効く場所は2つあります。ターン終了時に出る「Cooked for 1m 6s · done 6:05 PM」の時計と、文字起こしビューアー(Ctrl+Oで開くトランスクリプト表示)のタイムスタンプです。どちらもClaude Code v2.1.257以降が必要です。
文字起こしビューアーは、各アシスタントメッセージにタイムスタンプと使用モデルを添えて表示します。既定で1行に折りたたまれているMCP呼び出し(Called slack 3 timesのような表示)も、ここでは展開されます。
{
"timeFormat": "24-hour",
"timeZone": "Asia/Tokyo"
}対応する範囲は「Any file」です。~/.claude/settings.json(ユーザー)、.claude/settings.json(プロジェクト)、.claude/settings.local.json(ローカル)、組織配布の管理設定のどこに置いても有効です。組織管理下では、自分のファイルに書いても管理設定側の値が優先されて変わらないことがあります。
関連する設定キーは3つあり、役割が少しずつ違います。
時刻表示まわりの3つのキー
timeFormat
時刻の書式を決めます。12時間表記、24時間表記、UTC固定、strftimeパターンから選びます。
timeZone
表示に使うタイムゾーンをIANA名で指定します。システムの時刻設定は変わりません。
showTurnDuration
ターン終了メッセージ自体の表示と非表示を切り替えます。既定は
trueです。
timeFormatで12時間・24時間表記を切り替える
timeFormatはstring型で、4つのプリセットかstrftimeパターンのどちらかを受け付けます。既定は"auto"(未設定と同じ)です。
| 値 | 表示例 | 向いている場面 |
|---|---|---|
"auto"(既定) | 表示例表示ごとの組み込み書式 | 向いている場面特に変更が要らない場合 |
"12-hour" | 表示例6:05 PM | 向いている場面12時間表記に固定したい場合 |
"24-hour" | 表示例18:05 | 向いている場面24時間表記に固定したい場合 |
"24-hour-utc" | 表示例18:05Z | 向いている場面チーム全体をUTC基準で統一したい場合 |
"auto"のときは、時刻ごとに組み込みの書式がそのまま使われます。公式のリファレンスでロケールに従うと書かれているのは、ターン終了メッセージの時計です。文字起こしビューアーのタイムスタンプまで同じロケール依存になるとは書かれていません。両方の表示を揃えたいときは、"auto"のままにせず、プリセットかパターンを明示します。
/configを開いてTime formatの行を選ぶと、4プリセットから対話的に切り替えられます。設定ファイルに直接書くなら次の形です。
{
"timeFormat": "24-hour"
}"24-hour-utc"だけはtimeZoneを無視し、常にUTCで表示します。UTCとローカルを設定で使い分けたいなら、"24-hour"か"12-hour"とtimeZoneの組み合わせにします。
strftimeパターンで書式を自由に指定する
プリセットに当てはまる書式がなければ、%を含むstrftimeパターンをtimeFormatに直接指定できます。%を含む値はパターンとして扱われます。プリセットにもパターンにも当たらない値は"auto"と同じ扱いです。
{
"timeFormat": "%Y-%m-%d %H:%M"
}この設定では、ターン終了時の時計が2026-09-28 18:05のように日付付きで表示されます。文字起こしビューアーではタイムスタンプ全体がこのパターンで決まります。日付を出したいなら、パターンに日付の指定子まで入れておく必要があります。/configのメニューにはプリセットしか出ないので、パターンはsettings.jsonへ直接書きます。
公式リファレンスの例が使う指定子は、次の5つです。
| 指定子 | 意味 |
|---|---|
%H | 意味24時間制の時(00〜23) |
%M | 意味分(00〜59) |
%Y | 意味西暦4桁 |
%m | 意味月(01〜12) |
%d | 意味日(01〜31) |
%I(12時間制の時)、%p(AM/PM)、%a(曜日の略称)といった指定子も、標準的なstrftimeでは同じ意味です。ただし、Claude Codeの公式ページに載っているのは上の5つを使った例だけです。
仕上がりの見当は、手元のdateコマンドでつけられます。dateもstrftimeの書式を受け取るので、パターンを決めるときの下書きになります。次は同じ瞬間をUTCと日本時間でそれぞれ出した結果です(macOSのdateで実行)。
N=$(date +%s)
TZ=UTC date -r $N +"%Y-%m-%d %H:%M"
TZ=Asia/Tokyo date -r $N +"%Y-%m-%d %H:%M"2026-10-04 23:59
2026-10-05 08:59UTCと日本時間では9時間ずれるため、日付をまたぐ時間帯には表示される日付そのものが変わります。timeZoneを固定する価値が出やすいのは、この日付つきの書式です。dateはOSのコマンドなので、Claude Code側の描画と一致するかは、設定後に実際のターン終了メッセージで見ます。
timeZoneで日本時間などに表示を変える
timeZoneは、表示専用のタイムゾーンをIANAタイムゾーン名で指定するキーです。実行環境のシステム時刻は変えず、画面上の表示だけをずらします。
{
"timeZone": "Asia/Tokyo"
}既定は未設定で、システムのタイムゾーンがそのまま使われます。名前をClaude Codeが認識できない場合は、システムのタイムゾーンが使われます。認識できない名前はシステムのタイムゾーンに置き換わるので、反映されないときはまず名前のつづりを疑います。
値はIANAタイムゾーンデータベースの名前です。"Asia/Tokyo"のような「地域/都市」の形が基本で、公式の例は"UTC"と"Europe/Dublin"の2つです。/configにはtimeZoneの行がなく、設定ファイルへ直接書く以外の変更手段はありません。
timeFormatが"24-hour-utc"のときは、このキーは無視されます。timeZoneを使うなら、ほかの3プリセットかstrftimeパターンと組み合わせます。
showTurnDurationとの違い
timeFormatとtimeZoneは時刻の書式を変えるだけで、ターン終了時の時計そのものは消せません。丸ごと止めるのは別のキーshowTurnDurationです。スピナーの動詞や進捗バーなど、待ち時間まわりの表示設定はspinnerVerbsと表示設定4つの解説にあります。
falseにすると「Cooked for 1m 6s · done 6:05 PM」のメッセージが出なくなり、そのメッセージに対するtimeFormat/timeZoneは意味を持たなくなります。showTurnDurationが切り替えるのはターン終了メッセージです。文字起こしビューアーのタイムスタンプはtimeFormat/timeZoneで決まります。~/.claude.jsonに古いバージョン由来の値が残っていると、どの設定ファイルもこのキーを指定していない場合に限って、その値が適用されます。
チームの時刻表示をどうそろえるか
複数のタイムゾーンにまたがるチームでは、「全員UTCで揃える」か「各自のタイムゾーンで見る」かの2択になります。
UTC統一か、各自のゾーンか
UTCに統一する
.claude/settings.jsonに"timeFormat": "24-hour-utc"だけを書いてコミットします。cloneした全員の時計とタイムスタンプが18:05Zの形になります。timeZoneは無視されるので書く必要がありません。
各自のゾーンで見る
.claude/settings.local.jsonでtimeFormatを"24-hour"に上書きし、timeZoneへ自分の地域名を足します。共有設定がUTC固定のままでも、ローカルの設定が上位なので自分の表示だけ変えられます。
個人の好みで変えるだけなら、~/.claude/settings.jsonで十分です。どのファイルに何を置くかの判断基準はsettings.json完全ガイドにまとめています。
どのsettings.jsonが勝つか
同じキーが複数のファイルにあるときは、優先順位の高いほうが使われます。高い順に次のとおりです。
- 管理設定(組織が配布)
- コマンドラインの
--settings - プロジェクトローカル設定(
.claude/settings.local.json) - 共有プロジェクト設定(
.claude/settings.json) - ユーザー設定(
~/.claude/settings.json)
設定ファイルを書き換えずにその場だけ試すなら、--settingsにJSONを渡します。
claude --settings '{"timeFormat": "24-hour"}'v2.1.289のclaude --helpでは、このフラグは「Path to a settings JSON file or a JSON string to load additional settings from」と説明されています。ファイルのパスでもJSON文字列でも渡せます。値はそのセッション限りで、ユーザー・プロジェクト・ローカルの各設定より上位に適用され、ファイルは書き換わりません。ただし管理設定には勝てません。
読み込むファイルを絞る--setting-sourcesというフラグもあります。claude --helpには、user、project、localをカンマ区切りで渡すと説明されています。共有設定のせいで表示が変わっているのかを切り分けたいときは、--setting-sources userのようにして比べる手があります。
公式リファレンスのtimeFormat/timeZoneの項には、専用のコマンドラインフラグも環境変数も載っていません。一時的に試す手段は--settingsだけです。
設定が反映されないときの確認
設定ファイルの変更は、実行中のセッションに自動で反映されます。公式は、ほとんどの編集は再起動なしで効くとしています。再起動が要る例として挙がっているのはmodel、effortLevel、modelSettingsで、timeFormat/timeZoneはその例に入っていません。
反映されないときは、次の順で確かめます。
表示が変わらないときの切り分け
- 1
/statusで読み込まれたファイルを見る
Setting sourcesの行に、今のセッションが読み込んだ設定ファイルが並びます。この行が示すのはファイルの一覧までです。
timeFormat/timeZoneの値をどのファイルが供給しているかは出ません。 - 2
より上位のファイルを疑う
管理設定、
--settings、プロジェクトローカル設定、共有プロジェクト設定が、同じキーを別の値で上書きしていないかを見ます。 - 3
値そのものを見直す
strftimeパターンには
%が必要です。%のない未知の文字列は"auto"と同じ扱いになり、書式が変わらないように見えます。timeZoneのつづりが違う場合も、システムのタイムゾーンで表示されます。 - 4
claude doctorで弾かれた項目を確認する
設定ファイルの一部が読み込みごと弾かれていることがあります。
claude doctorを実行すると、Claude Codeが拒否したエントリを確認できます。
まとめ
timeFormatとtimeZoneは、Claude Code v2.1.257で追加された、ターン終了時の時計と文字起こしビューアーの時刻だけを変えるキーです。どちらもターン終了メッセージと文字起こしの時刻にだけ効きます。チーム全員に効かせたい設定は共有のプロジェクト設定へ、自分だけの好みはユーザー設定かローカル設定へ置く、という分け方で足ります。追加の経緯はClaude Code v2.1.257のリリースノートにまとめています。