よし。
my $today = DateTime->now(time_zone => "local")->truncate(to => "month");my @ month_lastday_do_not_31 = grep {31 != $today->clone->set_month($_)->add(days => 30)->day} (1 .. 12);say @ month_lastday_do_not_31;
246911末尾の11→十一→士→侍(さむらい)
【解説】変数todayと言っときながら月頭を設定<おい現在日時(タイムゾーンはローカル、tokyo/japanだっけ)から月まで切り詰め(日時分秒が初期値)1月から12月までを1月ずつ月頭をコピーして月を設定し直して各月の1日にして30日足した日付が31日か見る。月末が30日なら30日足すと翌月に行ってしまい日付が1日(以降)になる。日付が31日になる月だけ選抜して配列に入れて表示。配列の表示は裸のままなので要素間にスペースが入らない。配列をダブルクォーテーションで囲むとスペースが入る。
よくあるチョンボclone忘れて元のオブジェクトをドンドン書き替えてしまい、「あれ、今月の月頭だろ?」と思ってたらset_monthでtodayが12月の月頭になってる。DateTimeの変更するメソッドは元のオブジェクトを変更して元のオブジェクトを返すことに注意。
月末知りたいケースはあると思ったら関数あった。
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
月末知りたいケースはあると思ったら関数あった。