日本語

開発者ツール · Unix タイムスタンプ コンバータ

Unix 時間が 1 1 月 1970 に始まる理由: エポックの短い歴史

· 背景

タイムスタンプ unix-time データ形式

Unix エポックのゼロ点から放射状に広がるタイムライン
オリジナル ToolAcre ベクトル イラスト

1 1 月 1970 には何も起こりませんでした。この日付は、Unix のオリジナルのクロックがオーバーフローする恐れがあったため、便宜上選択されました。この投稿では、初期の Unix クロック、秒への切り替え、およびこの規則がどのようにして世界中に広まったのかについて説明します。

誰も祝わない日付 — 1970 が半世紀経ってもバグ、デフォルト、ダッシュボードに表示され続ける理由

1 月 1970 は、ソフトウェアが短い期間または秒数をミリ秒と間違えるたびに表示されます。これは、ToolAcre によって生成されたフォールバック誕生日ではありません。これは、入力が解釈されたゼロ点です。エポック 0 のテストでは、`1970-01-01T00:00:00.000Z` と木曜日が返されます。

したがって、その日付を見ることで診断が可能になります。ゼロに近い値、ゼロに強制された欠落フィールド、またはスケールの不一致はすべて、近くに表示される可能性があります。フォーマットを非難する前に、生の値を取得してください。カレンダー出力には、受信した算術演算が表示されます。

ToolAcre の注目すべきエポック テーブルでは、ゼロに意図的なラベルが付けられており、1970 がブラウザによって選択されたエラー ページではなく、定義された参照であることが強調されています。

Unix の最初のクロック — 1971 の開始から 60 分の 1 秒を数え、3 年以内に 32 ビットの余地がなくなる

ワークブックには、1971 から 60 分の 1 を数えた初期クロックの詳細な説明が記載されています。必須のリポジトリ ソースにはその歴史が記載されていません。記憶に基づいてそれを繰り返すことは、たとえ外部の歴史が後でそれをサポートするとしても、オーサリング契約に違反することになります。

実証できるのは現在の軸です。エポックではゼロ、その後は正の秒数、その前は負の秒数です。このメカニズムは、コンバーターと診断ソフトウェアを使用するのに十分です。将来の歴史記事では、コードを設計会議の証拠として扱うのではなく、レビューされた一次情報源または学術情報源を追加する必要があります。

リポジトリは Unix の最初のクロック設計をソースとしていないため、歴史的な再構築は主張されません

ToolAcre は入力 Unix タイムスタンプに名前を付け、エラー ガイダンスで 1970-01-01 UTC からの秒またはミリ秒として定義します。情報源は、なぜその年が選ばれたのか、丸みが重要なのか、それとも設計者がどの地平線を望んでいたのかについては説明していない。それらの動機は省略されたままです。

算術は、固定原点の永続的な有用性を説明します。減算により経過距離が得られ、比較順序は瞬間であり、符号は値がゼロのどちら側にあるかを示します。ゼロの選択は慣習的です。生産者と消費者の間で一貫性が保たれることで、数値が相互運用可能になります。

この区別により、慣例と結果が分離されます。歴史家が条約の起源に関する証拠を評価し続ける一方で、ソフトウェアは自信を持ってその結果に依存することができます。

実装された定義は 1970 を使用します。それを選択した動機には、ここには存在しない歴史的資料が必要です

テストは POSIX 変換と同様に毎日モデル化され、`2016-12-31T23:59:59Z` から `2017-01-01T00:00:00Z` に明示的にジャンプします。これは、このツールの動作を示す実行可能な証拠です。これは、外部規格の文言や全範囲を引用するものではありません。

標準の主張と実装テストを区別してください。テストは、リリースがそのフィクスチャの下で何を行うかを証明します。標準文書は、適合システムが何をすべきかを定義します。ここで、実際の契約は、形式化履歴をでっちあげなくても出力を予測できるほど明確です。

このテストは、将来のリファクタリングで特別なリープ ラベルが出力に静かに挿入されることも防ぎます。この規則が存在する理由を誇張することなく、目に見える互換性が保護されています。

ToolAcre は POSIX スタイルのモデルをテストしますが、標準の引用としては機能しません

JavaScript の日付はエポック カウントをミリ秒単位で表しますが、ToolAcre は Unix 秒を受け入れ、1,000 を乗算して変換します。ルートは両方の形式も返します。この境界は、Web アプリケーションが 3 つの余分な 10 進ゼロを含む同じ瞬間を頻繁に公開する理由を説明しています。

リポジトリは、データベース、C ライブラリ、およびその他のエコシステムがエポック表現を採用した年表を確立できません。出典のない広がりを語るのではなく、現在の相互運用性の継ぎ目を示し、使用されたユニットにラベルを付けます。これは、現在取り組んでいる開発者にとって実用的な証拠です。

この制限により、よくあるコンテンツの失敗、つまり、一連のもっともらしいマイルストーンが引用なしで繰り返され、後の読者が蓄積された繰り返しを文書証拠と間違えるまで回避されます。

リポジトリの証拠は、完全な拡散履歴ではなく、JavaScript のミリ秒表現を示しています

固定エポックにはローカル ゾーンがありません。 ToolAcre は、結果の日付を UTC でフォーマットし、ブラウザーのローカル ゾーンで個別にフォーマットします。 −1 テストが示すように、負の値はゼロより前に拡張されます。これらの結果は、数値軸と書式設定レイヤーから直接得られます。

この実装には、±8.64×10¹5 ミリ秒の日付範囲もあります。それは選択された表現の限界であり、時代の抽象的な概念に固有の限界ではありません。コンバーターの結果から一般化する前に、誰の範囲と単位が議論されているかを必ず確認してください。

ローカル フォーマッタは、オフセットに応じて UTC 境界の前または後の日付を適用する場合があります。それはゼロには動きません。人間の暦投影のみが変更されます。

これでカバーされないもの — 独自の歴史を持つ他のシステムのエポック (1900、1601、1980 など)

他のシステムでは別のゼロと別のスケールを選択できるため、両方の ToolAcre ユニットでは大きな整数が無意味なままになる可能性があります。この記事では、1900、1601、または 1980 の起源の歴史については詳しく説明しません。記事 340 では、その不一致を認識し、文書化された定義から変換を導き出すことに焦点を当てています。

起源が不明な場合は、ゼロを繰り返しシフトするのではなく、ソース文書と比較してください。 Unix コンバータは意図的に 1970 を想定します。 1 つの数値から外部エポックを自動識別することはできません。単位と一緒に原点を保持すると、算術的成功が意味上の間違いになるのを防ぎます。

他のエポックの起源は、ここで履歴を要求せずに個別に比較されます。

信頼できる教訓は機械的なものです。Unix のゼロは 1970 UTC の始まりにマップされ、記号はその周囲に広がり、秒は日付書式設定の前の JavaScript ミリ秒になります。 ToolAcre は、値 0、-1、および注目すべきエポック テーブルを使用して、これらの各ファクトを観察可能にします。

人々がその規則を選択した理由は、現代のコードからの推論ではなく、歴史に基づいたものです。その境界を尊重することで、より短い、しかしより真実な説明が生まれます。算術演算にはコンバータを使用します。動機やマイルストーンを特定する前に、適切な歴史的資料を使用してください。

証拠の規律は技術的な正確さの一部です。正確な省略により、歴史的なアカウントが責任を持って拡張される前に、どのような新しいソースが必要であるかをメンテナーに正確に伝えることができます。