たとえば 2023111
という日付が登場した時、これは 20230111
とも 20231101
とも解釈がされうるということです。
にわかには信じがたい出来事ですが太古のコードを眺めているとそういうことがあります。大変ですね。これが生きるということと言うこともできるはずです。まあ俺が書いたコードじゃないし......
というわけでひとまず被害状況としてどういう日付が影響を受けるかサクっと確認してみましょう。ふつうに手で検証してもわかる話ではありますが、今日は街に雪が降ったのと元のコードがRubyだったのでRubyで書いて確認しました。
#!/usr/bin/env ruby # coding: utf-8 require 'date' dict = {} d = Date.new(2023, 1, 1) for day in 0..364 yyyymd = (d + day).strftime('%Y%-m%-d') unless dict[yyyymd] dict[yyyymd] = [] end yyyymmdd = (d + day).strftime('%Y%m%d') dict[yyyymd].append(yyyymmdd) end for yyyymd, yyyymmdds in dict if yyyymmdds.length() >= 2 puts yyyymd => yyyymmdds end end
{"2023111"=>["20230111", "20231101"]} {"2023112"=>["20230112", "20231102"]} {"2023113"=>["20230113", "20231103"]} {"2023114"=>["20230114", "20231104"]} {"2023115"=>["20230115", "20231105"]} {"2023116"=>["20230116", "20231106"]} {"2023117"=>["20230117", "20231107"]} {"2023118"=>["20230118", "20231108"]} {"2023119"=>["20230119", "20231109"]} {"2023121"=>["20230121", "20231201"]} {"2023122"=>["20230122", "20231202"]} {"2023123"=>["20230123", "20231203"]} {"2023124"=>["20230124", "20231204"]} {"2023125"=>["20230125", "20231205"]} {"2023126"=>["20230126", "20231206"]} {"2023127"=>["20230127", "20231207"]} {"2023128"=>["20230128", "20231208"]} {"2023129"=>["20230129", "20231209"]}
1年のうち36日、つまりおよそ10%が影響を受けることがわかります。大変ですね。頑張りましょう。
[追記]
ところでこれは推察なんですけど、元コードとしては `%Y-%m-%d` と書くことで `YYYY-MM-DD` としたかったんだけど、その時に気流か気圧か何かが変化したせいで `%Y%-m%-d` になるというという不幸が発生して `YYYYMD` になったのではないか?????
— moznion (@moznion) February 27, 2023