web-dev-qa-db-ja.com

1601年1月1日の意義は何ですか?

この構造は、数値を表す64ビット値です
1601年1月1日から100ナノ秒間隔。

参照:http://msdn.Microsoft.com/en-us/library/aa915351

「1601以降」に設定されているのはなぜですか?なぜ、1970年、あるいは2000年のUNIX時間ではないのですか?それほど遠い日付の互換性で何ができますか?


自分に答える

ANSI日付は、1601年1月1日を日1として定義し、COBOLの日付の起点として使用されます。このエポックは、グレゴリオ暦のうるう年の前の400年サイクルの始まりであり、2000年で終わります。

さらに:

34
zakrzak

1/1/1601がエポックの始まりだったからです。

レイモンド・チェンからそれを取ってください:

Win32エポックが1601年1月1日なのはなぜですか?????

FILETIME 構造体は、1601年1月1日からの時間を100ナノ秒間隔の形式で記録します。なぜその日付が選択されたのですか?

グレゴリオ暦は400年周期で動作し、1601はWindows NTの設計時にアクティブだった周期の最初の年です。言い換えれば、数学がうまく出せるように選ばれたのです。

私はこれを確認するDave Cutlerからのメールを実際に持っています。

45
Ian Boyd

さて、1601年1月1日は17世紀の初日でした。また、17世紀に振り子時計が発明され、時間を1秒の精度で計測できるようになりました。1。したがって、(理論的には)その期間からその正確さで測定された時点まで、現存する文献に参照があるかもしれません。

しかし、実際には選択は任意です。 「エポック」があり、提供されている必要があります

  1. エポックは、「負の時間」値がまれであるほど十分に遠いです。

  2. ラップアラウンドタイムは、将来、数世代離れた十分な時間です。

任意の選択で十分です。

でもね、そんなに気になるなら、スティーブ・バルマーに手紙を送ってね2


主張された情報源を考えると、私はイアン・ボイドの答えを信じる傾向があります。そして、その理由は、(グレゴリオ暦のうるう年の計算のために)数学を簡単にするためです。ただし、その単純化がどれほど小さいか、およびその背後にある推論がどれほど弱いかを考えると、選択は(IMO)本質的に任意です。 (それが間違っていると言っているわけではありません...)


1-OK ...おそらくそれほど正確ではない。

2-またはSatya Nadella。

8
Stephen C

その実用的な選択。

現代の西暦は1752年にイギリス(およびその植民地)が1582年以来ほとんどのカトリックヨーロッパで採用されていたグレゴリオ暦を採用するまで一貫していませんでした。

これは、うるう年などを使用した現代のカレンダーで、1月1日を冬至に合わせます。

では、1752年1月1日から始めてみませんか?基本的なうるう年のルール「4桁の世紀も4で割り切れる場合を除いて、2桁の年が4で割り切れる場合はうるう年」)が400年サイクルを確立したためです。 1601年1月1日から始まる最初の完全なサイクル(少なくともローマ)。

うるう年と日付の計算は、400年のサイクルの途中から開始しなければ十分に苦痛です。したがって、英国の日付は10日だったので、1752年より前の日付は地理的な場所で修飾する必要があることを思い出す限り、1600はかなり良い開始です。同期していません。この時までにローマ時代の日付で。

5
James Anderson

すでに述べたように、私は一般的な答えはグレゴリオ暦が400年周期で動作し、1601がWindows NTの設計時にアクティブだった周期の最初の年であるためだと思います。

1601年1月1日はCOBOL整数日付の起源です。

また、ANSI日付形式による1日目です。

そして、それが含まれている形式であるISO8601に基づいてさらに推測すると、1583年以前は、年間366日の多発性グレゴリオ暦に基づいていました。たぶん彼らはちょうど次の世紀に切り上げました。

4
davidcondrey