Ответ 1
Попробуйте это, добавьте время, которое вы хотите получить в следующую дату,
$original_date = "2015-08-07 02:00:00";
echo $next_date = date('Y-m-d H:i:s', strtotime("monday this Week 02:00:00 +1 week", strtotime($original_date)));
У меня странная проблема. Когда я делаю strtotime, это не учитывает часовую часть исходной даты, и она всегда возвращается в полночь. Я пытался исследовать, но я не мог найти ничего конкретного.
Есть ли что-то, что мне не хватает?
$original_date = "2015-08-07 02:00:00";
$next_date = date('Y-m-d H:i:s', strtotime("monday this Week +1 week", strtotime($original_date)));
Он возвращает $next_date
как 2015-08-14 00:00:00
Попробуйте это, добавьте время, которое вы хотите получить в следующую дату,
$original_date = "2015-08-07 02:00:00";
echo $next_date = date('Y-m-d H:i:s', strtotime("monday this Week 02:00:00 +1 week", strtotime($original_date)));
monday this week +1 week
предполагает, что вы ищете полночь понедельника недели прошедшего времени. Если вы хотите сохранить часовую часть времени, вы можете добавить его в формат date
, потому что он всегда должен быть таким же, как в $original_date
date('Y-m-d ' . date('H:i:s', strtotime($original_date)), strtotime("monday this Week +1 week", strtotime($original_date)));
Когда вы используете monday
в strtotime
, вы возвращаете время до 00:00:00. Вам нужно будет явно передать время в ваших date
или strtotime
, чтобы получить желаемое поведение. См. этот же вопрос по аналогичной проблеме.
$next_date = date('Y-m-d H:i:s', strtotime("monday this Week +1 week " . date('H:i:s', strtotime($original_date)), strtotime($original_date)))
$date = strtotime('2018-08-14 02:00:00');
$next_date = date('Y-m-d H:i:s', strtotime("monday this Week 02:00:00 +1 week", $date)); // 2018-08-20 02:00:00