У меня есть переменная date из SQL $start
, но мне нужно добавить дни к этой переменной с помощью PHP. Я сделал это для добавления:
<?php
$start = $start;
//Incrementando 2 dias
$jor2 = strtotime($start . "+ 1 days");
echo date("d-m-Y", $jor2);
?>
Я не знаю, что случилось, но результат: 19-03-2028
а моя переменная $start
- 28-03-18
.
Выход должен быть:
$start (28 / 03 / 2018) + 7 days, (04 / 04 / 2018)
strtotime()
не может разобрать формат dmy
.
Когда сепаратор компонентов является -
либо вы используете 4-цифры года (первый или последний компонент) или год является первым компонентом (4 или 2 цифры).
Используйте DateTime::createFromFormat()
чтобы сообщить парсеру формат, который вы используете:
$start = DateTime::createFromFormat('d-m-y', '28-03-18');
$end = $start->add(new DateInterval('P1D'));
echo($end->format('d-m-Y'));
# 29-03-2018
<?php
// Date coming from Mysql
$start = '2018-04-05';
$result = date('Y-m-d', strtotime($start . ' +1 day'));
var_dump($result);
Обновление после комментария @axiac:
Поскольку $start
содержит формат даты, отличный от формата Mysql, вот способ его преобразования:
<?php
$start = '28-03-18';
list($d, $m, $y) = sscanf($start, '%d-%d-%d');
$start = $y . '-' . $m . '-' . $d;
$start
используемое OP, равно '28-03-18'
. Чем ваш код лучше, чем тот, который размещен в вопросе?
SELECT '2018-04-05 ' + INTERVAL 1 DAY
илиSELECT [column] + INTERVAL 1 DAY
с колонной