Наличие кошмара в данный момент и просто не видит, почему оно не работает
У меня есть значение в форме H:i (т.е. 10:00, 13:30) и т.д. названный $time
То, что я хочу сделать, создают две новой стоимости, $startTime, который составляет 30 минут прежде чем $time и $endTime, который составляет 30 минут после $time
Я попробовал следующее, но просто, кажется, не хочет работать
$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime('+30 minutes',$time));
Если я прохожу через 10:00 как через $time и повторяю и $startTime и $endTime, я добираюсь:
$startTime = 00:30
$startTime = 01:30
$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime('+30 minutes', $time));
Я обычно использую немного другой способ:
$startTime = date("H:i",time() - 1800);
$endTime = date("H:i",time() + 1800);
Где 1800 секунд = 30 минут.
Ваше текущее решение не работает, потому что $time
является строкой - это должна быть временная метка Unix. Вместо этого вы можете сделать следующее:
$unix_time = strtotime('January 1 2010 '.$time); // create a unix timestamp
$startTime date( "H:i", strtotime('-30 minutes', $unix_time) );
$endTime date( "H:i", strtotime('+30 minutes', $unix_time) );
Чтобы это сработало, $time
должен быть меткой времени. Вы не можете передать "10:00" или что-то вроде $time = date('H:i', '10:00');
что вы, похоже, и делаете, потому что тогда я получаю результаты 0:30 и 1:30.
Попробуйте
$time = strtotime('10:00');
В качестве альтернативы используйте DateTime (нижеприведенный вариант требует PHP 5.3, хотя):
$dt = DateTime::createFromFormat('H:i', '10:00'); // create today 10 o'clock
$dt->sub(new DateInterval('PT30M')); // substract 30 minutes
echo $dt->format('H:i'); // echo modified time
$dt->add(new DateInterval('PT1H')); // add 1 hour
echo $dt->format('H:i'); // echo modified time
или процедурный, если вам не нравится ООП
$dateTime = date_create_from_format('H:i', '10:00');
date_sub($dateTime, date_interval_create_from_date_string('30 minutes'));
echo date_format($dateTime, 'H:i');
date_add($dateTime, date_interval_create_from_date_string('1 hour'));
echo date_format($dateTime, 'H:i');