Я хочу преобразовать строку, которую я выбрал, в объект даты, чтобы я мог добавить / вычесть дни из него. Я попробовал несколько методов, которые я прочитал в сети, но все потерпели неудачу, и я полностью потерян (это должно быть легко!). Это один пример:
echo '11: '.substr($content, 0, 10).'<br/>';
$theDay = new datetime(substr($content, 0, 10));
echo '2: '.$theDay->format('yyyy-mm-dd').'<br/>';
$theDay->modify('+1 day');
echo '21: '.$theDay->format('yyyy-mm-dd').'<br/>';
Вывод, который я получил, был:
11: 2016-02-10
2: 16161616-0202-1010
21: 16161616-0202-1111
Первая строка показывает, что структура даты правильная, вторая строка выглядит странно! и после добавления 1 дня это выглядит так, как будто оно добавило 1 день (11 вместо 10), но опять же это выглядит странно. Что мне не хватает?
Вы перепутали строку формата:
echo '11: '.substr($content, 0, 10).'<br/>';
$exDay = new datetime(substr($content, 0, 10));
echo '2: '.$exDay->format('Y-m-d').'<br/>';
$exDay->modify('+1 day');
echo '21: '.$exDay->format('Y-m-d').'<br/>';
Выход:
11: 2016-02-10
2: 2016-02-10
21: 2016-02-11
Увидеть руководство для полного списка символов формата. Для этого вопроса важны:
Y A full numeric representation of a year, 4 digits
y A two digit representation of a year
m Numeric representation of a month, with leading zeros
d Day of the month, 2 digits with leading zeros
Т.е. ты не пишешь yyyy
в течение четырехзначного года, но вместо Y
(то же самое касается m
а также d
).
Других решений пока нет …