開発者 🔒 ブラウザ内で動作 — データは送信されません

タイムスタンプを日付に変換

UNIXタイムスタンプを任意のタイムゾーンの読める日付に変換し、UTCとISO 8601の表記も並べて表示します。

現在のUNIXタイムスタンプ:
タイムスタンプ → 日付
日付 → タイムスタンプ

1行に1つのタイムスタンプまたは日付を、最大500行まで入力できます。

UNIXタイムスタンプを読める日付に変換する

UNIXタイムスタンプは、1970年1月1日00:00:00 UTCからの経過秒数です。ログ、API、データベース、JWTのクレームがこの形で時刻を保存するのは、整数1つなら曖昧さがないからです。その値が指すのは「ある瞬間」であって、どこかの壁時計の読みではありません。代償として、人間が一目で読むことはできません。このページは、まさにその用途でタイムスタンプ変換ツールを開きます。数値を貼り付けて、日付を読むだけです。

結果は4つの形で同時に表示されます。1行目は上部で選択中のタイムゾーンでの瞬間、2行目は<abbr title="Coordinated Universal Time">UTC、3行目は多くのAPIが求めるISO 8601形式、4行目は現在からの隔たりを平易な言葉で示したものです。計算はすべてブラウザー内で行われ、数値がページの外に出ることはありません。

図:Unix時間を数直線で表したもの。0(1970年1月1日)から10億、17億を経て、2038年1月19日の符号付き32ビット上限 2147483647 まで。1970年1月1日 00:00:00 UTC からの経過秒数01970-01-0100:00:00 UTCUnixエポック10000000002001-09-0901:46:40 UTC10億秒17000000002023-11-1422:13:20 UTC21474836472038-01-1903:14:07 UTC32ビットの上限
Unixタイムスタンプはエポックからの秒数を数えただけの値で、常にUTCです。タイムゾーンが関係するのはローカル日時に戻すときだけです。符号付き32ビット整数で保存しているシステムは2038年1月19日にあふれます。

秒とミリ秒、そして桁数という見分け方

同じ瞬間でも単位によって桁数が変わり、単位を読み違えると日付は何十年もずれます。この変換ツールは桁数から推測し、何を前提にしたかを表示します。データが変わり種のときは単位メニューでその推測を上書きできます。

単位同じ瞬間の表記桁数主な出どころ
秒173568960010UNIX系ツール、PHPのtime()、JWTのクレーム
ミリ秒173568960000013JavaScriptのDate.now()、Java、MongoDB
マイクロ秒173568960000000016PostgreSQL、Pythonのtime.time_ns()を1000で割った値
ナノ秒173568960000000000019Go、Prometheus、高分解能のログ

10桁の数値は2286年11月20日まで10桁のままなので、今世紀の日付なら桁数での判別は安全な目安になります。負の数値は1970年より前の日付で、ほかと同じように変換できます。

タイムゾーンは表示の選択であって、数値の一部ではありません

タイムスタンプにタイムゾーンはありません。同僚が「このログは1時間ずれている」と言うとき、たいていタイムスタンプは一致していて、描画だけが違います。上部でタイムゾーンを切り替えると、同じ数値から別の現地時刻が生まれ、UTCとISO 8601はそのまま動きません。どちら側が別の時計を見ているのかを示すのに、これが一番早い方法です。

サマータイムはタイムゾーンデータベースが処理するので、Europe/Berlinの夏の日付はUTC+02:00、冬の日付はUTC+01:00として、何もしなくても正しく表示されます。

コードで変換する

変換ツールの下のコードタブは、画面上のタイムスタンプの変換をJavaScript、Python、PHP、SQL、Go、Java、C#、Bashで出力するので、その数値が来た場所へそのまま貼り込めます。覚えておきたい落とし穴が2つあります。JavaScriptのnew Date()はミリ秒を求めるため、10桁のタイムスタンプは1000を掛ける必要があります。またMySQLのFROM_UNIXTIME()の結果は、UTCではなくサーバーのタイムゾーンで描画されます。

逆方向の変換

反対側のペインは逆の処理を行います。日付と時刻を選ぶと、秒とミリ秒のタイムスタンプが返ります。その方向には日付をタイムスタンプに変換というページがあり、13桁に特化したミリ秒の変換もあります。数値がDiscordのメッセージから来たものなら、Discordのタイムスタンプが<t:…>という記法を説明し、生成もしてくれます。

関連ガイド