FormatやToStringの日付書式に1文字を指定すると、予想と違う結果になる問題

https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings#notes

単一のカスタム書式指定子の使用
カスタム日時書式指定文字列は、複数の文字で構成されます。 日時書式指定メソッドでは、1 文字の文字列が標準の日時書式指定文字列として解釈されます。

.NETの日付書式には「単一のカスタム書式指定子」というものがある。
例えばdate.ToString("d")は「ゼロ埋めしない日」ではなく「yyyy/MM/dd書式の日付」の文字列を戻す。
"d"、"f"、"F"、"g"、"h"、"H"、"K"、"m"、"M"、"s"、"t"、"y"、"z"、":"、"/" ……がカスタム書式演算子
単一のカスタム書式指定子は、書式指定が2文字以上であれば利用されない。
単一のカスタム日時指定子の前にパーセント ("%") 書式指定子を入れると本来の意味の書式指定になる。
例えばdate.ToString("%d")ならば「ゼロ埋めしない日」が得られる。