• ベストアンサー

【Excelの不思議な日付処理の初期値の疑問】日付

【Excelの不思議な日付処理の初期値の疑問】日付データの基準日が1900/01/00 0:00なのは何故ですか? 1900/01/01 0:00が基準日だと思っていましたが、 =now()-now() にすると1900年1月0日0秒という存在日付の0日が基準日になっていることが分かりました。 日付データの基準日が存在しない日にちなのに計算は正しく表示されます。 どういう仕組みで整合性が取れるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

いつも同じ質問を、間髪を入れずに、アッチとコッチで? 見苦しい!

posttruth2017
質問者

お礼

みなさん回答ありがとうございます 1箇所で正しい答えがわかると思っているなら間違いです インターネットの情報は23%しか正しい情報がない。 73%が間違った回答です。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>1900/01/01 0:00が基準日だと思っていましたが、 基準日と言うより起算日と言った方が良いと思います。 Excelでは日付を1900/1/1=1として経過日数を計算する仕組みになっています。 > =now()-now() にすると1900年1月0日0秒という存在日付の0日が基準日になっていることが分かりました。 それはあなたの思い違いです。 >日付データの基準日が存在しない日にちなのに計算は正しく表示されます。 1900年1月0日と言う日付はありませんので =now()-now() → 0 が日数の正しい値になります。 終了日-開始日=経過日数なので日付ではありません。 しかし、表示形式を "yyyy/m/d" にすると数値の0が1900/1/0と表示されてしまいます。 エラーにならないのはバグかも知れません。 経過日数を表示するには表示形式を ""標準" にすべきでしょう。 >どういう仕組みで整合性が取れるのか教えてください。 1900/1/1の前日は1899/12/31です。 しかし、Excelでは1899/12/31以前の日付を扱うことができませんので経過日数が1に満たない値を日付の表示形式で表示させようとしたとき1900/1/0となるようにプログラムされたのでしょう。(1未満の値を日付で表示させないようにプログラムされていないのはバグと言えるのではないでしょうか?) 日付は1900/1/1=1を起点とした経過日数を表示形式で日付と判断できる形に表しているもので、開始日から終了日までの経過日数は表示形式を標準または数値で表さないと理解できないのではないでしょうか? 次のような状態良いのでしょうか? =[終了日]-[開始日] → 2017/3/14-2017/2/7 → 35 → 1900/2/4

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

1日(未満)経った日付が http://qiita.com/AQRiL_1132/items/4e1d8eb980b952275c09 にあるように1900年1月1日ではないですか。そういう基準で言えば、基準日は1900年1月0日というのかな。暦にないのですが基準ということを考える以上そうなる。 A1セル1900/1/1 B1セルに=A1-1で 1900/1/0 ここまでは計算してくれる。-2すると結果の値がでない。 1900年で年初1秒でも経ったら、日付的には1月1日といわれるわけだから。日本の数え年を思い出すが。 https://support.microsoft.com/ja-jp/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel 1900 年を基準とした日付方式では、サポートされる最初の日付は 1900 年 1 月 1 日です

関連するQ&A