開発 へ戻る
日付フォーマット指定子チートシート (dayjs / strftime)

日付フォーマット指定子チートシート (dayjs / strftime)

`YYYY-MM-DD` / `%Y-%m-%d` などの日付フォーマット指定子を入力すると、現在時刻 (または任意の基準日) をそのパターンで即時整形します。dayjs (Moment.js 互換) と strftime (C / Python / PHP) の 2 スタイルを Mode 切替、ISO 8601 / RFC 3339 / RFC 2822 / 日本式 / US 式 / ログ用などの 10 プリセット、全トークンチートシート付き。開発者の「あのフォーマット文字列なんだっけ?」問題を一発解消。

使い方

スタイル (**dayjs / Moment** または **strftime**) を選び、パターン文字列を入力すると、**現在時刻** (または「基準日時」に ISO 文字列を入れた任意の時刻) でフォーマットした結果が即座に表示されます。例: `YYYY-MM-DD` → `2026-01-15`、`%Y-%m-%d` → `2026-01-15`、`YYYY年MM月DD日 (ddd) HH:mm` → `2026年01月15日 (Thu) 14:30`。下に **10 プリセット** (ISO 8601 / RFC 3339 / RFC 2822 / 日本式 / US 式 / ログ用など) があるので「あのフォーマットなんだっけ」を即座に確認できます。**全トークン一覧** もページ内に。**dayjs** は Moment.js 完全互換、**strftime** は C / Python / PHP / Ruby / Rust 互換。

詳細解説

日付フォーマット文字列が暗示する業務コンテキスト

%Y/%m/%d %H:%M:%S」というパターンを検索しているとき、その人が何かを開発していることは明らかです。もう少し踏み込めば、どの言語スタック (Python / Ruby / PHP) を使っていて、どのような形式の出力を必要としているか — つまり担当業務の輪郭まで読み取れます。オンラインの日付フォーマット検索ツールは、クエリをサーバーに飛ばすことで「誰がいつ、どのフォーマットをどれだけ頻繁に調べているか」という行動ログを蓄積します。個々のクエリは地味でも、継続的なパターンは業務リズムや担当プロジェクトを推定する素材になります。

SaaS 系のオンラインツールはリリースサイクルや機能追加の資金調達のため、広告ターゲティングデータを活用することがあります。入力したフォーマット文字列から「バックエンドエンジニアが ISO 8601 形式の出力を必要としている」と分類されれば、それは広告プラットフォームに渡される属性情報の一部になりえます。

開発リズムを外部に観測させないために

プログラミング中にドキュメントを引くのは自然な行為ですが、その頻度や内容が外部サーバーに送信され続けると、チームの作業ペースや未公開機能の方向性がじわじわと漏れていきます。「YYYY-MM-DDTHH:mm:ssZ の形式の RFC 3339 出力が必要」というクエリは、どのシステムと何の仕様に合わせようとしているかの情報を含みます。日々の参照先をブラウザ内完結のツールに変えることは、開発ログを外部に渡さない小さな習慣です。

Date API と文字列置換だけでブラウザ内に閉じる仕組み

このツールはブラウザ標準の Date オブジェクトを使って現在時刻 (またはユーザーが入力した基準日時) を取得し、dayjs / Moment.js 形式と strftime 形式の 2 系統のトークンを JavaScript の文字列置換で展開します。外部 API の呼び出しはなく、入力したパターン文字列はブラウザのメモリ内で処理されたままです。タイムゾーンはブラウザのローカル設定をそのまま使い、UTC オフセットも Date.prototype.getTimezoneOffset() から直接取得します。

DevTools の Network タブを開いた状態でパターンを入力しても、ページ読み込み以降にリクエストが発生しないことをリアルタイムで確認できます。ソースコードは GitHub で公開しているので、文字列置換のロジックを第三者が監査することも可能です。

プリセットをチェックリストとして使う

ISO 8601 / RFC 3339 / RFC 2822 / 日本式 / US 式 / ログ用など 10 プリセットを用意しているのは、「仕様書の形式と自分の出力がずれていないか」を素早く確認するためです。ログ出力のフォーマットを統一したい、API レスポンスのタイムスタンプ形式を外部仕様に合わせたい、といった局面で基準となるパターンを手元に持っておくと、実装前のミスを事前に防げます。

dayjs トークンと strftime トークンの設計思想の違い

dayjs / Moment.js 系のトークンは「YYYY は 4 桁年・MM は 2 桁月」のように 文字を重ねて桁数を表現 する設計で、桁を増やせばゼロパディングが効きます。一方 strftime (C 言語の <time.h> 由来、Python datetime.strftime / PHP date / Ruby Time#strftime で使われる) は %Y %m %d のように % プレフィックス + 1 文字 で表現します。本ツールはこの 2 系統を独立した文字列置換パスとして実装し、Mode 切替で安全に切り替えます。

最も事故が多いのは大文字小文字の意味です。dayjs では MM が月・mm が分・DD が日付・dd が曜日名と意味がまったく違い、MM/DDmm/dd と書くと「月/日」が「分/秒未満」になります。strftime も %M が分・%m が月で逆に間違えやすく、%Y (4 桁年) と %y (2 桁年) も混同しがちです。プリセットを採用すれば仕様書由来の正しい組み合わせがそのまま入るため、トークンの大文字小文字を 1 つ間違える事故を避けられます。

タイムゾーン・UTC オフセット・地域フォーマットの落とし穴

ISO 8601 と RFC 3339 はどちらも YYYY-MM-DDTHH:mm:ssZ 形式を採用していますが、RFC 3339 の方が一部の表記 (時間と分の間のコロン省略など) を禁止しており、API のタイムスタンプ仕様としてはより厳密です。本ツールは Date.prototype.getTimezoneOffset() でブラウザのローカルタイムゾーンを使うため、Z (UTC) を出力したい場合は事前に基準日時を UTC で指定するか、出力後に +09:00 形式のオフセットを Z に置換する必要があります。

ロケール依存も無視できない要素です。MMMM (月名)・dddd (曜日名) などのトークンは、英語環境では January Monday、日本語ロケールでは 1月 月曜日 を返します。本ツールはブラウザの Intl.DateTimeFormat を一部で利用するため、出力が navigator.language に影響されます。複数地域でログ収集する場合は、ロケール非依存の数値表現 (YYYY-MM-DD) を採用するのが安全です。整形対象の値を unix epoch 秒として扱いたい場合は unix-timestampDate ↔ epoch ↔ ISO の往復確認ができ、ISO 8601 が示す週番号 (YYYY-Www) の境界を見たいときは iso-week で年と週をマトリクスで確認できます。

よくある質問

入力データはサーバーに送信されますか?
いいえ。すべてブラウザ内で完結します。`Date` API + 文字列置換のみで、外部 API も使いません。
dayjs と strftime の使い分けは?
**dayjs / Moment.js** は JS 系で最も使われるフォーマット規約 (`YYYY-MM-DD HH:mm:ss`)。Day.js、Moment.js、dayjs プラグインで使用。**strftime** は C 言語起源で Python (`%Y-%m-%d`)、PHP (`date()` の派生)、Ruby (`Time#strftime`)、Rust (`chrono::format`) などサーバーサイド全般で使用。フロント JS なら dayjs、バックエンドなら strftime が多い。本ツールは両方を並列で扱えます。
リテラル文字 (素通ししたいテキスト) はどう書く?
**dayjs**: `[brackets]` で囲む。例: `[今日は]YYYY年MM月DD日[です]` → `今日は2026年01月15日です`。**strftime**: `%` で始まらない文字はすべて素通しなので、囲み不要。例: `今日は%Y年%m月%d日です` → `今日は2026年01月15日です`。
ISO 8601 と RFC 3339 の違いは?
**ISO 8601** は `2026-01-15T14:30:45+09:00` のような日付時刻表記の国際規格 (元規格)。**RFC 3339** は ISO 8601 をインターネット標準で使うために制約を追加した規格 (RFC 3339 → JSON Schema や OAuth など IETF 文脈で使用)。実用上は両者ほぼ同じで、`YYYY-MM-DDTHH:mm:ss.SSSZ` (ミリ秒 + Z = UTC) が安全な形式。本ツールでは両プリセットを用意。
タイムゾーンはどう扱う?
本ツールは **ブラウザのローカルタイムゾーン** を使います。`Z` (dayjs) / `%z` (strftime) でブラウザの UTC オフセット (例: `+09:00`) を出力。UTC 固定で出したい場合は、基準日時に Z 付きの ISO 文字列を入れて変換してから利用してください。あるいは別ツール (timezone-convert) を併用。
他にどんなフォーマット規約がありますか?
**Java SimpleDateFormat** (`yyyy-MM-dd`、dayjs と似ているが大文字小文字の意味が違う)、**Unicode CLDR LDML** (Intl.DateTimeFormat の内部)、**RFC 2822** (メールヘッダ)、**.NET カスタム書式** (`yyyy/MM/dd`) など。本ツールでは需要が高い 2 種 (dayjs / strftime) に絞っています。

「送らない」を確かめるには

このツールは入力データを外部に送信しません。仕組み・監査手順・運営方針は以下で詳しく説明しています。

類似のツール

Unix タイムスタンプ ⇄ 日時 — TZ 切替対応

Unix タイムスタンプ ⇄ 日時 — TZ 切替対応

UNIX タイムスタンプ (秒 / ミリ秒) と ISO 8601 / 任意のタイムゾーン (デフォルト: UTC, Asia/Tokyo, America/New_York。追加・削除可能) の表記を相互に変換します。ブラウザ内処理。

開発時刻変換
日時計算 — 加算 / 減算 (年・月・週・日・時間・分・秒)

日時計算 — 加算 / 減算 (年・月・週・日・時間・分・秒)

基準の日時に対して年・月・週・日・時間・分・秒の単位で加算・減算します。納期計算、契約満了日、N 日後の予定、N 時間前のミーティング時刻など。月末同士の加算 (1/31 + 1 月 → 2/28 か 2/29) は JavaScript の Date と同様にロールオーバーします。結果は YYYY-MM-DD HH:MM:SS + 曜日 + 基準からの差サマリ + Unix エポック秒で表示。すべてブラウザ内で計算するため、入力した日時は外部に出ません。

時刻計算
期間フォーマット変換 — 秒・mm:ss・hh:mm:ss を相互変換

期間フォーマット変換 — 秒・mm:ss・hh:mm:ss を相互変換

経過時間 (Duration) を 3 つのフォーマット間で相互変換します。秒数 (5400)、時計表示 (01:30:00)、人間可読 (1h30m) のうち、欲しい出力形式を選ぶだけ。入力は自動判別で、3 形式が 1 行ずつ混在していても OK。複数行を一括変換し、parse できない行は件数だけ表示。1d (= 86400 秒) も含めた d/h/m/s 単位に対応。すべてブラウザ内で処理。

時刻変換整形
ISO 8601 週番号 ⇔ 日付変換 — その日の週確認・週開始日

ISO 8601 週番号 ⇔ 日付変換 — その日の週確認・週開始日

ISO 8601 週番号 (例: 2026-W21-6) と日付 (例: 2026-05-23) を相互変換します。Mode で出力フォーマットを切替。曜日省略 (2026-W21) も解釈し、その週の月曜日を返します。1 月 4 日を含む週が常に W01、週は月曜始まりという ISO 規約に従い、年を跨ぐ週も (2024-12-30 = 2025-W01-1 など) 正しく処理します。すべてブラウザ内で処理。

時刻計算