traffic_reset_day) { $today = date('d');// 今天 日期 $last_day = date('t'); //本月最后一天 $next_last_day = date('t', strtotime("+1 month"));//下个月最后一天 $resetDay = $user->traffic_reset_day;// 用户原本的重置日期 // 案例:31 29,重置日 大于 本月最后一天 if ($resetDay > $last_day) { //往后推一个月 $resetDay -= $last_day; $reset_time = date( 'Y-m-' . $resetDay, strtotime("+1 month") ); //案例:20<30<31 } elseif ($resetDay < $last_day && $resetDay > $today) { $reset_time = date('Y-m-' . $resetDay); // 本日为重置日 } elseif ($resetDay == $today) { $reset_time = date('Y-m-d', strtotime("+1 month")); //本月已经重置过了 } elseif ($resetDay < $today) { //类似第一种情况,向后推一月 if ($resetDay > $next_last_day) { $resetDay -= $next_last_day; $reset_time = date( 'Y-m-' . $resetDay, strtotime("+1 month") ); } else { $reset_time = date( 'Y-m-' . $resetDay, strtotime("+1 month") ); } } // 用户账号有效期大于重置日期 if ($reset_time > $user->expired_at) { $reset_time = null; } $user->update(['reset_time' => $reset_time]); } Log::info( '---用户[ID:' . $user->id . ' - ' . $user->username . ' (' . $user->email . ')]的新重置日期为' . ($reset_time != null ? '【' . $reset_time . '】' : '【无】') . '---' ); } Log::info( '----------------------------【升级用户重置日期】结束----------------------------' ); } }