Как можно принудительно изменить день в дате и времени в php


$date = date_create('2013-10-27');// This is the date that inputed in textbox and that format is (Y-m-d)

$date = date_create('2013-10-10');// and if i click the button i want to force change the 27 to 10?

Должен ли я использовать date_modify и выполнить некоторый цикл или есть другой способ изменить его простым способом, а не циклическим.

Author: Denmark, 2013-10-03

5 answers

Примечание: Если вы просто пытаетесь изменить значение дня на дату, полученную из отправленного <input> из <form>. Вы можете попробовать выполнить следующие действия:

$date = '2013-10-27'; // pass the value of input first.

$date = explode('-', $date); // explode to get array of YY-MM-DD

//formatted results of array would be
$date[0] = '2013'; // YY
$date[1] = '10';   // MM
$date[2] = '17';   // DD

// when trigger a button to change the day value.

$date[2] = '10'; // this would change the previous value of DD/Day to this one. Or input any value you want to execute when the button is triggered

// then implode the array again for datetime format.

$date = implode('-', $date); // that will output '2013-10-10'.

// lastly create date format

$date = date_create($date);
 0
Author: Jhonathan H., 2016-01-31 15:30:57

explode, implode, date, strtotime, preg_replace и т.д. Серьёзно?
ОП использует класс DateTime, нет необходимости понижать его код с помощью такого рода решений bisare.

$in = date_create('2013-10-27');

// example 1
$out = date_create($in->format('Y-m-10'));
echo $out->format('Y-m-d') . "\n";

// example 2
$out = clone $in;
$out->setDate($out->format('Y'), $out->format('m'), 10);
echo $out->format('Y-m-d') . "\n";

// example 3
$out = clone $in;
$out->modify((10 - $out->format('d')) . ' day');
echo $out->format('Y-m-d') . "\n";

Демо-версия.

 28
Author: Glavić, 2013-10-03 07:49:50

Вы можете использовать собственный PHP " функция date_date_set" для внесения этого изменения.

$date = date_create('2013-10-27');
echo $date->format('Y-m-d');
2013-10-27
date_date_set($date,
              date_format($date, 'Y'),
              date_format($date, 'm'),
              10);
echo $date->format('Y-m-d');
2013-10-10

Или с использованием Объектно-ориентированного стиля:

$date = new DateTime('2013-10-27');
echo $date->format('Y-m-d');
2013-10-27
$date->setDate($date->format('Y'), $date->format('m'), 10);
echo $date->format('Y-m-d');
2013-10-10
 2
Author: Mario Rezende, 2017-01-22 19:47:12

Использовать функцию PCRE

$date = '2013-10-27';
$new_date = preg_replace("/\d{2}$/", "10", $date);

Инструкция Preg_replace

 -1
Author: songerzhou, 2013-10-03 04:37:02

$date = date("Y-m-d", strtotime("2013-10-10"));

Обновлено: чтобы заставить изменить день с 27 на 10

1) получить год и месяц

$date = date("Y-m-", strtotime( $_POST['user_selected_date'] ));

2) добавьте свой день

$date .= '10';

Также вы можете закончить его за ОДИН шаг $date = date("Y-m-10", strtotime( $_POST['user_selected_date'] ));

 -1
Author: Allen Chak, 2013-10-03 10:17:33