teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

1900/2/29 対応

2016/07/01 08:06

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,4 +1,11 @@
1
1
  変換したい数字を n とすると
2
2
  ```C#
3
3
  (new DateTime(1899,12,31)).AddDays(n);
4
+ ```
5
+ ###追記
6
+ Excel には 1900 年 2 月 29 日があるそうなので、それを踏まえた修正を行いました。
7
+ 西暦 2000 年を生きた皆様は当然ご存じでしょうが、閏年は基本的に四年に一度ですが、百年に一度は閏年ではありません。しかし、四百年に一度は閏年です。
8
+ ロータス1-2-3 の作られた時代のプログラマはうっかりしてたんですね。
9
+ ```C#
10
+ (new DateTime(1899,12,31)).AddDays(n >= 60 ? n - 1 : n);
4
11
  ```