名前 題名 ▼ takaさん > wikipediaの春分秋分コード表と比べると下記の違いが検出されました > > https://ja.wikipedia.org/wiki/春分#日付 > > 2055= 3/21 (year mod 4 = 3) > error 2055/3/20 | 春分の日 > 2088= 3/20 (year mod 4 = 0) > error 2088/3/19 | 春分の日 > > 2074= 9/23 (year mod 4 = 2) > error 2074/9/22 | 秋分の日 > > 確認コード > > function Syunbunday(y : word) : word; > begin > // 春分日 対応期間: 1924-2091 > // 参考ソース https://ja.wikipedia.org/wiki/春分#日付 , 17世紀から24世紀 > Result := 20; > case y mod 4 of > 0 : if (y < 1960) then Result := 21; > 1 : if (y < 1992) then Result := 21; > 2 : if (y < 2024) then Result := 21; > 3 : if (y < 2056) then Result := 21; > end; > end; > > function Syuubunday(y : word) : word; > begin > // 秋分日 対応期間: 1900-2099 > // 参考ソース https://ja.wikipedia.org/wiki/秋分#日付 , 17世紀から24世紀 > Result := 23; > if (y < 2012) then > begin > if (y < 1980) then > case y mod 4 of > 1 : if (y < 1920) then Result := 24; > 2 : if (y < 1948) then Result := 24; > 3 : if (y < 1980) then Result := 24; > end > end > else > begin > Result := 22; > case y mod 4 of > 1 : if (y < 2044) then Result := 23; > 2 : if (y < 2076) then Result := 23; // 2074(22又は23日) > 3 : Result := 23; > end > end; > end; > > procedure TForm1.Button1Click(Sender: TObject); > var > i, year, xday : integer; > s : string; > begin > Memo1.Clear; > for year := 1949 to 2091 do > begin > xday := Syunbunday(year); > s := ''; > IsSpecialHoliday(EncodeDate(year,3,xday), s); > if ContainsStr(s, '春') then > Continue; > Memo1.Lines.Add(Format('%d= 3/%d (year mod 4 = %d)' , [year, xday, year mod 4])); > for xday := 19 to 23 do > if IsSpecialHoliday(EncodeDate(year,3,xday), s) then > Memo1.Lines.Add(Format(' error %d/3/%d | %s' , [year, xday, s])); > end; > Memo1.Lines.Add(''); > for year := 1948 to 2099 do > begin > xday := Syuubunday(year); > s := ''; > IsSpecialHoliday(EncodeDate(year,9,xday), s); > if ContainsStr(s, '秋') then > Continue; > Memo1.Lines.Add(Format('%d= 9/%d (year mod 4 = %d)' , [year, xday, year mod 4])); > for xday := 22 to 24 do > if IsSpecialHoliday(EncodeDate(year,9,xday), s) then > Memo1.Lines.Add(Format(' error %d/9/%d | %s' , [year, xday, s])); > end; > end; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link