У меня есть дата в таком формате:
2009-01-01
Как вернуть ту же дату, но 1 год назад?
Вы можете использовать strtotime
:
$date = strtotime('2010-01-01 -1 year');
Функция strtotime
возвращает strtotime
метку unix, для получения форматированной строки вы можете использовать date
:
echo date('Ym-d', $date); // echoes '2009-01-01'
Используйте функцию strtotime ():
$time = strtotime("-1 year", time()); $date = date("Ymd", $time);
Использование объекта DateTime …
$time = new DateTime('2099-01-01'); $newtime = $time->modify('-1 year')->format('Ym-d');
Или использовать сейчас на сегодня
$time = new DateTime('now'); $newtime = $time->modify('-1 year')->format('Ym-d');
самый простой способ, которым я пользовался и работал хорошо
date('Ym-d', strtotime('-1 year'));
это сработало отлично .. надеюсь, это поможет кому-то еще .. 🙂
// 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("Ymd", $lastyear);
Вы можете использовать следующую функцию для вычитания 1 или любых лет с даты.
function yearstodate($years) { $now = date("Ymd"); $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);
И, глядя выше, вы также можете использовать следующие
$user_age_min = "-"."1"; echo date('Ym-d', strtotime($user_age_min.'year'));