Приветствую! Подскажите, как прибавлять/отнимать определенное количество часов от даты/времени в формате ISO-8061? Например, имеем: 2019-12-27T14:20:00.000Z Пока вот что: Код (Text): $time_ISO = '2019-12-27T14:20:00.000Z'; echo('Дата и время ISO-8601 '.$time_ISO.'<br>'); $time_ISO_preobraz_plus_UNIX = date('Y-m-d H:i:s:U:eO', strtotime($time_ISO)); echo('Дата и время ISO-8601 '.$time_ISO_preobraz_plus_UNIX.'<br>'); $time_UNIX = substr($time_ISO_preobraz_plus_UNIX, 20, 10); echo('Время UNIX '.$time_UNIX.'<br>'); Получаю: Дата и время ISO-8601 2019-12-27T14:20:00.000Z Дата и время ISO-8601 2019-12-27 14:20:00:1577456400:UTC+0000 Время UNIX 1577456400 Вопрос: Как к 2019-12-27T14:20:00.000Z прибавить, к примеру, 4 часа? (не строковыми же функциями) Как из UNIX Timestamp получить такое представление (2019-12-27T14:20:00.000Z)? Заранее спасибо!
В общем, пока решил задачу таким образом: Код (Text): $poyas = 7; $ch_poyas = $poyas*3600; // количество секунд в часовом поясе $startTimeUTC7 = '2019-12-28T19:00:00.000Z'; // Исходное время, UTC+7, в формате ISO-8601 echo('Исходное время, UTC+7, в формате ISO-8601 '.$startTimeUTC7.'<br>'); $time_UNIX = date('U', strtotime($startTimeUTC7)) - $ch_poyas; // получение времени UNIX и приведение к 0 поясу echo('Время UNIX, UTC+0 '.$time_UNIX.'<br>'); $startTime = date('Y-m-dTH:i:s.000Z', $time_UNIX); $search = array('UTC', '0000'); $replace = array('T', '000Z'); echo('Время со сдвигом 7 часов, UTC+0, в формате ISO-8601 '.str_replace($search, $replace, $startTime).'<br>'); Вывод на экран: Исходное время, UTC+7, в формате ISO-8601 2019-12-28T19:00:00.000Z Время UNIX, UTC+0 1577534400 Время со сдвигом 7 часов, UTC+0, в формате ISO-8601 2019-12-28T12:00:00.000Z Может, кто подскажет более лаконичное (грамотное) решение?