Я пытаюсь получить месяц, шесть месяцев с текущей даты.
Я пробовал использовать:
date('d', strtotime('+6 month', time()));
Но он, похоже, не работает, всегда возвращает 01
. Есть лучший способ сделать это?
Спасибо!
Я считаю, что работа с DateTime намного проще в использовании:
$datetime = new DateTime(); $datetime->modify('+6 months'); echo $datetime->format('d');
или
$datetime = new DateTime(); $datetime->add(new DateInterval('P6M')); echo $datetime->format('d');
или в PHP версии 5.4+
echo (new DateTime())->add(new DateInterval('P6M'))->format('d');
Если вы все еще хотели использовать strtotime и функцию date в отличие от объекта DateTime (), следующее будет работать:
date('d', strtotime('+6 months'));
Вы можете использовать класс DateTime
в сочетании с классом DateInterval
:
<?php $date = new DateTime(); $date->add(new DateInterval('P6M')); echo $date->format('d M Y');
Вам не нужно передавать time()
в strtotime, поскольку это значение по умолчанию.
Кроме того, ваш подход правильный – за исключением того, что вы принимаете date('d')
(которая выдает день), а не date('m')
течение месяца, поэтому echo date('m', strtotime('+6 month'));
следует сделать.
Тем не менее, я бы рекомендовал использовать метод DateTime
, о котором говорил Джон. DateTime
имеет несколько преимуществ по сравнению с «старыми» функциями даты, например, они не перестают работать, когда секунды, когда большой взлом UNIX больше не вписывается в 32-битное целое.
Вы можете использовать класс simpleDate:
include('../code/simpleDate.php'); $date = new simpleDate(); echo $date->now()->addMonth(6)->get();
Проверьте учебники здесь.