В общем реализован самый обычный таймер на javascript , мне необходимо пользователю показать, сколько времени осталось до следующего бонуса (ежедневно), в зависимости от данных в массиве $next_bonus.
Самый первый подходящий по времени.
Вроде просто на первый взгляд, но показывает не так, как задумывалось (в ночное время).
Помогите правильно реализовать и сравнить время.
andrewkard
Отправлено: 31 Июля, 2015 - 17:50:50
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013
Помог: 7 раз(а)
я так и реализовал, только привел обе даты с помощью функции strtotime
Проблема в том, что мне нужно отчитать время до бонуса:
Следующий бонус через date('H:i:s',$next_bonus);
Конкретно время ночное дает сбой ( 23:00 и выше ), вернее я не правильно реализовал.
Короче если на таймере бонус в 2 ночи, а на часах 00:00 например, то считает до бонуса 11 часов, видимо косяк со следующим днем.
Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013
Помог: 7 раз(а)
Все равно не то, но спасибо.
Дело в том, что например 00:50:00 будет всегда меньше, чем 11:00:00.
В остальном код даже мой первый работает ровно, что то пока не доходит до меня как реализовать данную идею.
Мелкий
Отправлено: 31 Июля, 2015 - 23:16:17
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Осталось понять, нафига так сложно.
В минуте не 100 секунд, а 60. Но разве это мешает сравнивать?
Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013
Помог: 7 раз(а)
Поставил на локале час ночи.
Как итог 20000 не видит , $next_bonus не определен.
в 12:08:46 ночи
$curtime будет равен 846
в коде if ($next > $curtime)
т.е. 2000 > 846 не найдет вхождений, в общем тоже не то
Пойду спать, со свежей головой думать нужно)
andrewkard
Отправлено: 02 Августа, 2015 - 20:49:11
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
lastdays
lastdays пишет:
Дело в том, что например 00:50:00 будет всегда меньше, чем 11:00:00.
Не совсем понял Ваш комментарий, но по моему код работает верно:
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Вот ведь. Любимые createFromFormat умеет только жадный поиск.
Мы нормально вычисляем ближайшую точку в будущем - 24000.
Дальше пытаемся распарсить и глупый createFromFormat берёт 24 как часы, 00 как минуты и удивляется оставшейся одной цифре "A two digit second could not be found".
Можно добавить ведущий ноль к строке или что-то в таком духе:
Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013
Помог: 7 раз(а)
=)
Забавный тупиковый случай, первый раз блин.
Все равно не то, если например 10:00:00 вечера, а следующая дата 02:00:00 ночи, то посчитает целый день до начала этой даты.
А хотелось что бы считал как 4 часа.
Предполагаю что нужно рыть в другую сторону..
Sail
Отправлено: 06 Августа, 2015 - 09:05:54
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
lastdays пишет:
если например 10:00:00 вечера
, а каким образом Вы ему сообщили, что 10:00:00 именно вечера?
andrewkard
Отправлено: 06 Августа, 2015 - 10:56:37
Участник
Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014
Помог: 30 раз(а)
Теперь ясно, что если в массиве бонусов значение не найдено, бонус будет равен первому элементу массива бонусов (след. день), мой модифицированный скрипт:
Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2015
Помог: 0 раз(а)
У вас правильная логика, только вы работаете с временем одного дня, что бы не было проблем с ночным временем, вам надо использовать полностью всю дату в формате 'Y-m-d H:i:s', перефодить ее во время и сравнивать
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.