Tôi có một ngày ở định dạng này:
2009-01-01Làm thế nào để tôi quay lại cùng ngày nhưng sớm hơn 1 năm?
Tôi có một ngày ở định dạng này:
2009-01-01Làm thế nào để tôi quay lại cùng ngày nhưng sớm hơn 1 năm?
Câu trả lời:
// set your date here
$mydate = "2009-01-01";
/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime("-1 year", strtotime($mydate));
// format and display the computed date
echo date("Y-m-d", $lastyear);Mặc dù có nhiều câu trả lời được chấp nhận cho câu hỏi này, tôi không thấy bất kỳ ví dụ nào về subphương pháp sử dụng \Datetimeđối tượng: https://www.php.net/manual/en/datetime.sub.php
Vì vậy, để tham khảo, bạn cũng có thể sử dụng một \DateIntervalđể sửa đổi một \Datetimeđối tượng:
$date = new \DateTime('2009-01-01');
$date->sub(new \DateInterval('P1Y'));
echo $date->format('Y-m-d');Trả về:
2008-01-01Để biết thêm thông tin \DateInterval, hãy tham khảo tài liệu: https://www.php.net/manual/en/class.dateinterval.php
Bạn có thể sử dụng hàm sau để trừ 1 hoặc bất kỳ năm nào cho một ngày.
 function yearstodate($years) {
        $now = date("Y-m-d");
        $now = explode('-', $now);
        $year = $now[0];
        $month   = $now[1];
        $day  = $now[2];
        $converted_year = $year - $years;
        echo $now = $converted_year."-".$month."-".$day;
    }
$number_to_subtract = "1";
echo yearstodate($number_to_subtract);Và nhìn vào các ví dụ trên, bạn cũng có thể sử dụng
$user_age_min = "-"."1";
echo date('Y-m-d', strtotime($user_age_min.'year'));