PHP strtotime возвращается всегда полночь

У меня странная проблема. Когда я делаю 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

Ответ 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)));

Ответ 2

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)));

Ответ 3

Когда вы используете 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)))

Ответ 4

$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