Страница 1 из 1
Складывание времени
Добавлено: Вт июл 15, 2014 7:29 pm
alex546
задача как сложить время, азбуку прочитал и не догнал
есть свойство которое отвечает за время начала полива газона gardena.start ему присвоено 20:00
есть свойство gardena.long ему присвоено 00:45
Нужно свойству gardena.end присвоить 20:45
есть код который присваивает требуемому свойству некую цифру далекую от 20:45
$GardenaStart = gg('gardena.start');
$GardenaLong = gg('gardena.long');
$GardenaEnd = $GardenaStart +$Gardena.Long;
sg("gardena.end", $GardenaEnd);
где ошибка, или где почитать на тему как сложить время.
Re: Складывание времени
Добавлено: Вт июл 15, 2014 10:46 pm
sergejey
Функции складывания времени сейчас нет. Могу предложить такой вариант:
Код: Выделить всё
$GardenaStart = gg('gardena.start');
$GardenaLong = gg('gardena.long');
$realTimeStart=timeConvert($GardenaStart);
if (preg_match('/^(\d+):(\d+)$/', $GardenaLong, $m)) {
$hour=(int)$m[1];
$minute=(int)$m[2];
$realTimeEnd=$realTimeStart+$hour*60*60+$minute*60;
$GardenaEnd=date('H:i',$realTimeEnd);
sg("gardena.end", $GardenaEnd);
}
Re: Складывание времени
Добавлено: Ср июл 16, 2014 7:40 am
denis
я тоже для полива использовал объекты, но чтобы не парить мозг со сложением у меня есть два объекта:
на примере ТС
gardena.timeStart - собственно время в формате сколько секунд с 1980 года, и с этим значением можно делать что угодно, складывать, отнимать и прочее. добавить 4 минуты = gardena.timeStart + 4*60 или сложить gardena.timeStart + gardena.Long
и второе объект, который используется только для вывода на экран, но меняется при каждом изменении gardena.timeStart
gardena.timeStartFormatted - значение в человекоподобном формате "20:45"
Так мне показалось проще и понятнее, чем каждый раз "разбирать значения". Кроме того! Полив зачастую надо делать 1 раз 2 дня, 2 раза в день, 1 раз в 3 дня - и каждый раз разбирать время неудобно, а так отформатировал как душе угодно второе значение и все ОК!
p.s. только с поливом есть некоторые тонкости если например комп выключался, а время полива уже прошло? Начинать полив сразу же?) растения могут не порадоваться. А откуда брать новый отсчет времени?) А если 1 раз 3 дня - то куда переставить новое значение? Вообщем пока только черновик накидал алгоритма, т.к. нужно учесть как можно больше вариантов сочетаний по изменению расписания.
Re: Складывание времени
Добавлено: Ср июл 16, 2014 8:47 am
vtec
Может так:
Код: Выделить всё
$dateStart = '20:00';
$dateLong = '45 minutes';
$dateEnd = date('H:i', strtotime("+$dateLong", strtotime($dateStart)));
echo $dateEnd;
Re: Складывание времени
Добавлено: Чт июл 24, 2014 8:19 pm
alex546
Всем спасибо, запустил на примере Сергея.
Теперь травка не засохнет.
Re: Складывание времени
Добавлено: Пт июл 25, 2014 12:23 pm
denis
alex546, такой практический вопрос про полив. Если отключится электричество, время start и end пройдет (т.е. по условию текущее время явно больше и открывать ничего не нужно), то как система поймет, что время start нужно переустановить? У меня объект дача далеко, и иногда все возможно. А там никакими бесперебойниками не спасешься, только если очень огромными. Кроме того, если был перерыв, то следовало бы начать полив сразу после подачи электричества.