開発者ツール · Unix タイムスタンプ コンバータ
1 つのタイムスタンプ、2 つのクロック: UTC と現地時間が 1 エポックで異なる理由
· 仕組み
タイムスタンプ unix-time タイムゾーン
エポック値は 1 つの瞬間を表しますが、表示される実時間はどこにいるかによって異なります。この投稿では、オフセット演算、日付自体が異なる理由、およびコンバーターが両方の読み取り値を表示する理由について説明します。
顧客は午前 9 と言っており、ログには 16:00 と記録されています — 同じイベント、2 つのクロック、そしてどこにも行かないサポート チケット
アプリケーション ログに 16:00 が記録されている間に、1 人が「朝 9 時」と報告すると、サポート ケースが停止する可能性があります。どちらのクロック ラベルも、ゾーンまたはオフセットが判明するまでイベントを識別しません。両方の参照が同じエポックに解決される場合、7 時間の処理遅延を検索すると、表示の違いに関する調査が無駄になります。
まず、生のタイムスタンプと各オブザーバーのゾーン コンテキストを収集します。 ToolAcre は、UTC と 1 回の変換からの現在のブラウザーローカル読み取り値を表示するため、ログを保持している人はすぐに比較できます。他の場所にいる同僚は、最初の人のローカル行が自分のマシンに適用されると想定するのではなく、共有 ISO 値を比較する必要があります。
エポックは実時間ではなく瞬間です。独自のゾーンを持たない 1970 からの秒数です。
エポックは、1970-01-01T00:00:00Z からの距離であり、単位は秒またはミリ秒です。都市、夏時間フラグ、優先時計表記は含まれていません。したがって、値 1,700,000,000 は 1 つの瞬間を識別します。火曜日の夕方や水曜日の朝などのラベルは、その瞬間の読み方を選択した後に作成される予測です。
これが、修正された「ローカル エポック」の保存がカテゴリー エラーである理由です。オフセットを追加すると、別の瞬間にカウントとポイントが変更されます。元の瞬間を保存または送信し、ユーザーがカレンダーを必要とするエッジで読み取りルールを適用します。 ToolAcre は、フォーマットされた出力の横に秒とミリ秒の数値を保持することで、その形状に従います。
オフセットの適用方法 — 時と分、30 分ゾーンと 45 分のゾーンの加算または減算、および年間で変更されるオフセット
固定オフセットの場合、算術は簡単です。UTC+09:00 は UTC より 9 時間進んだ時計を示し、UTC−05:00 は 5 時間遅れたことを示します。時間の小数部分は分として処理されるため、45 分のオフセットは整数時間に丸めることによって安全に表現されません。記号は表示されている現地の読み方に属します。
固定オフセットは依然として 1 つの観測値にすぎません。 ToolAcre は、ブラウザーの現在のゾーンで選択されたインスタントに適用されるオフセットを Intl に要求します。今日のオフセットが年間を通じて適用されるとは想定されていません。したがって、1 つのオフセットをアプリケーション構成にコピーすると、テスト中は正しく見えても、環境の適用可能なルールが変更されると失敗する可能性があります。
日付も変わるとき - UTC とローカルの異なる暦日にあたる真夜中近くの瞬間
時計の演算はカレンダーの境界を越えることができます。 00:20 UTC のインスタントは、前の日付では負のオフセットで表示され、その後の同じ日付では正のオフセットで表示されます。したがって、両方の参加者が自分のカレンダーを正確に覚えている場合でも、「14 日」のみを記録したチケットは、UTC ログの異なるスライスを参照する可能性があります。
チーム間でイベントを引き渡す場合は、完全な日付、時刻、オフセットを使用します。コンバーターの ISO 行は日付が UTC から切り離されるのを防ぎますが、ローカル行は使い慣れたコンテキストを提供します。インシデントが真夜中にまたがる場合は、複数のゾーンに書き込まれた人間のラベルを並べ替えるのではなく、エポックまたは UTC によってエントリを並べ替えます。
有効な例: UTC の 1700000000、UTC+9 ゾーン、および UTC−5 ゾーン - 書き出された算術演算と比較された日付
既存の公開されたユニット記事では、1,700,000,000 秒が `2023-11-14T22:13:20.000Z` であることが証明されています。 +09:00 の読み取り値が固定されている場合、2023-11-15 07:13:20 を取得するには 9 時間を追加します。固定の −05:00 の下で、5 時間を減算して 2023-11-14 17:13:20 を取得します。日付が変わるのは東側の例のみです。
これら 2 つのオフセット測定値は算術デモンストレーションであり、その日付の名前付き都市についての主張ではありません。 ToolAcre ローカル行は、Intl が実際のブラウザ ゾーンに提供するオフセットをレポートできるようにする必要があります。それを UTC 値と比較し、結果にどちらかの例示的な値を強制するのではなく、表示されたオフセットを書き留めます。
作業例: UTC で 1 つのエポック、次に 2 つの明示的な固定オフセット読み取り値
両方の測定値を表示すると、デバッグ セッションから精神的な減算がなくなります。サーバー チームは UTC を引用できますが、問題を再現する担当者は見たローカル クロックを認識できます。両方の行は 1 つの日付から派生しているため、秒とミリ秒が一致することは、それらが個別に編集されたり、別のイベントに丸められたりしていないことを証明します。
このペアは、スクリーンショットで特に役立ちます。使い慣れたローカル値にトリミングするのではなく、単位メモと ISO 行を含めます。クロップされたクロックは、旅行またはゾーン設定の変更後に再解釈できます。エポック プラス ISO は安定したままであり、ローカル レンダリングはその安定した参照を置き換えることなくユーザー エクスペリエンスを説明します。
これでカバーされないもの — 過去のオフセット変更と政治的タイムゾーンの決定。これらは算術ではなく tz データベースに存在します。
単純な加算では、適用可能なオフセットが異なる地域ゾーンを記述することはできません。コンバーターはローカルの書式設定を Intl に委任しますが、そのリポジトリは基礎となるルール テーブルや履歴決定を公開しません。したがって、この記事は過去の変更を列挙したり、将来のポリシーを予測したり、異なるデータを運ぶエンジンからの同一の出力を約束したりするものではありません。
アプリケーションが「この場所の 09:00」をスケジュールする必要がある場合は、名前付きゾーンを保持し、ゾーン対応のスケジューリング設計を使用します。 「このリクエストは今発生しました」を記録する必要がある場合は、瞬間を保持します。これらは異なるデータ要件です。固定の `+02:00` は、その値を生成した地域ルールを特定せずに、ある瞬間の測定値を記述することができます。
固定オフセット演算では、変化する地域ルールを再現できません
エポックはタイムライン上のピン、時計の文字盤はその周りに配置されたラベルと考えてください。 UTC は共通ラベルを提供します。ローカルフォーマットは便利なものを提供します。 ToolAcre はピンを変更せずに両方を提供します。そのため、時間のロスの証拠ではなく、時間の違いが予想されます。
係争中のイベントの場合は、生のカウントを貼り付け、単位を明示的に示し、ISO 出力を共有します。次に、ローカルの読み取り値を注釈としてのみ添付します。この順序により、「私の時計とあなたの時計」がチェック可能なマッピングに変わり、日付境界の変更が別の日のイベントに見せかけられることがなくなります。