Добавить переменную дней к дате из MySQL с помощью PHP

0

У меня есть переменная 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)
  • 0
    «У меня есть переменная даты из SQL» MySQL может также добавить +1 день, например, если формат даты 2018-04-05 ... SELECT '2018-04-05 ' + INTERVAL 1 DAY или SELECT [column] + INTERVAL 1 DAY с колонной
Теги:

2 ответа

1
Лучший ответ

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
1
<?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;
  • 0
    Значение $start используемое OP, равно '28-03-18' . Чем ваш код лучше, чем тот, который размещен в вопросе?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню