echo date('Y/m/d', strtotime('2000/0/0')); // 1999/11/30
「ゼロ月」は1月の前の月だから、前年の12月。
「ゼロ日」は1日の前の日だから、前月の末日。
つまり「ゼロ月ゼロ日」は前年の12月の前月の末日。つまり前年の11月の末日。
よって2000年0月0日は1999年11月30日となる。
ちなみに、下記のように0年0月0日としても同じ1999年11月30日が出力される。
echo date('Y/m/d', strtotime('0/0/0')); // 1999/11/30
これは、「0年」は年の短い表現と解釈されて2000年となるため。
…と思ったけど違うかも。
echo date('Y/m/d', strtotime('1/0/0')); // 1999/12/31
echo date('Y/m/d', strtotime('2/0/0')); // 2000/01/31
あー、mm/dd/yy形式と判定されるのねー。
「1/0/0」 → 「01/00/2000」 → 2000年1月0日 → 1999年12月31日
「2/0/0」 → 「02/00/2000」 → 2000年2月0日 → 2000年1月31日