1か月かかる場合に日付を調整する組み込みのPerl関数があるかどうか疑問に思っていました。たとえば、日付が 31 日の場合、31 日がない場合は前月末に調整されます。
31日が隣り合っている月(12月/ 1月、7月/ 8月)と2月でなければ、簡単に30日に変更します。現在の日付から一定時間離れた日付を保存したいだけです。
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$current_date = join("-", (1900+$year), ($mon+1), $mday);
$one_month_ago = join("-", (1900+$year), ($mon), $mday);
$one_year_ago = join("-", (1899+$year), ($mon+1), $mday);
2 月のインスタンスは年にしか適用されないので対処できますが、これが 2012 年 12 月 31 日に取得された場合、1 か月を削除すると 2012 年 11 月 31 日を意味し、もちろん存在しません。自分で物事を複雑にする前に、機能があるかどうかを尋ねると思いました...ありがとう:)