PHP заменяет номер дня переменной

#php #date

#php #Дата

Вопрос:

У меня есть этот код:

 $x = date("Y-m-d", strtotime($post['commissionEligibilityDate'] . "  " . $post['billingPeriodExpiration'] . " months"))
  
 $post['commissionEligibilityDate'] = 2011-11-08 <br/>
$post['billingPeriodExpiration'] = 2 <br/>
  

итак, $x возвращает 2012-01-08 .

У меня есть другая переменная $singleDate , и она равна 1 . Что я пытаюсь сделать, замените 08 на 01 . Как я могу это сделать?

Ответ №1:

Вам не обязательно использовать Y-m-d, вы можете использовать Y-m-01 или вашу переменную:

 $x = date("Y-m-".$singleDate, strtotime($post['commissionEligibilityDate'] . "  " . $post['billingPeriodExpiration'] . " months"))
  

Ответ №2:

Вы могли бы использовать класс DateTime:

 $d = new DateTime($x);
$year = $d->format('Y');
$month = $d->format('m');

$d->setDate($year, $month, '01');

echo $d->format('Y-m-d'); 
  

Комментарии:

1. использование вышесказанного было супер удивительным, поскольку добавление дней / месяцев сам PHP обрабатывает правильную дату и дает точный результат, мой сценарий заключался в добавлении даты, которая может изменить месяц и даже год. 1

Ответ №3:

 str_replace('08','01',$post['commissionEligibilityDate']);
  

Ответ №4:

 $explode = explode("-",$post['commissionEligibilityDate']);
$explode[2] = $singleDate;

$post['commissionEligibilityDate'] = implode("-",$explode);

$post['commissionEligibilityDate'] will now echo 2011-11-1
  

Ответ №5:

С PHP возможно практически все. Мое предложение, поскольку вы хотите получить только одно число с даты, которую вы планируете проверитьhttp://php.net/manual/en/function.date.php чтобы увидеть различные способы обработки выходных данных date(). Поскольку вы могли бы легко вывести день, добавьте к нему $ z = date (‘d’, time()) 1; например.

Я не уверен, что конкретно вы делаете со своими датами, но для меня это звучит так, как будто у вас может быть неправильное представление о том, что это такое, и как с ними работать. По сути, краткая идея заключается в том, что дата, определенная в переменной, является строкой. Вы можете создать их в любом случае, даже без использования date (), а затем сохранить их, если они будут в правильном формате, когда вы перейдете к их сохранению, т.Е. гггг-мм-дд, все должно быть в порядке.