Tôi có một ngày ở định dạng này:
2009-01-01
Là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-01
Là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ề sub
phươ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'));