Я получаю дату в виде строчки: "09.03.2017 18:46". Как мне из нее вычесть час, чтобы получить такую строчку "09.03.2017 17:46"?
Есть простой вариант:
$date = date_create("09.03.2017 18:46");
date_modify($date, "-1 hour"); // на 1 час назад
$date_new = date_format($date, "d.m.Y H:i");
echo $date_new; // 09.03.2017 17:46
Переменная $date_new - новая дата.
Например вот так:
$timestamp = strtotime('09.03.2017 18:46') - 60*60;
$date = date('d.m.y H:i', $timestamp);
echo $date;
Можно воспользоваться Datetime и в частности его методом date_sub, который вычтет любой интервал в зависимости от переданного шаблона
$input = '09.03.2017 18:46';
$output = new DateTime($input);
$output->sub(new DateInterval('PT1H'));
echo $output->format('Y-m-d H:i');
Нужно завести привычку работать с датой/временем, как с датой и временем.
Иначе придётся учитывать кучу тонкостей.
Функция для вычитания интервала из даты: DateTime::sub
$date = new DateTime('09.03.2017 18:46');
$date->sub(new DateInterval('PT1H'));
echo $date->format('Y-m-d H:i') . "\n";
3v4l.org
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости