Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: progressbar(прогрессбар) и GMT [2]
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » progressbar(прогрессбар) и GMT

Страниц (2): « 1 [2]
 

16. webog - 29 Сентября, 2015 - 16:26:58 - перейти к сообщению
zypikov пишет:
Вы еще не разобрались?


Нет! )

Вы читали мой пост? http://forum.php.su/topic.php?fo...74051#1442174051
Я там описал все. Умножение на 1000 не катит.

Есть еще варианты?
17. Panoptik - 29 Сентября, 2015 - 17:22:53 - перейти к сообщению
зачем парить мозг по синхронизации. я не читал те длинные куски кода, но дам совет. присылайте с сервера 3 метки времени (старт, текущая, конец) формат нужно смотреть исходя из задания, можно голый тамйстамп или же в формате Y-m-d H:i:s
на клиенте все метки преобразовываете в date

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var start_dt = new Date(start_date_from_server);
  3. var current_dt = new Date(current_date_from_server);
  4. var end_dt = new Date(end_date_from_server);
  5.  


далее рисуете прогресс бар исходя из серверных данных
напишите простенькую функцию которая будет рассчитывать оставшееся время исходя из двух значений. ну короче разложите свою большую задачу на мелкие части и поэтапно реализуйте каждую часть. ну а проблемы если появятся то срашивайте в гугле, а после тут (если не получится) только не по простыне кода, а по конкретному вопросу
18. webog - 29 Сентября, 2015 - 17:32:06 - перейти к сообщению
Panoptik пишет:
только не по простыне кода, а по конкретному вопросу


Я и задал вопрос: как победить GMT ? Одно время с сервера, другое клиентское.

У пользователей с МСК работает, у тех у кого ГМТ+4 и более уже не работает.

P.S. Будьте внимательнее! )
19. IllusionMH - 29 Сентября, 2015 - 18:02:17 - перейти к сообщению
Юзайте ISO 8601 вместо Unix time
20. webog - 29 Сентября, 2015 - 18:08:26 - перейти к сообщению
IllusionMH пишет:
Юзайте ISO 8601 вместо Unix time


Это в части JS ? Дело в том, что я в JS не бум бум. Поэтому и даю вознаграждение за верное решение.
21. IllusionMH - 29 Сентября, 2015 - 18:18:45 - перейти к сообщению
webog, это во всей системе(пых, БД, ЖС). Нужно прочесть что это, и юзать его. JS отлично хавает форматированнвйе строки.

Выше уже писали про getTimezoneOffset. Попробуйте поменять знак с + на - , т.к. для часовых поясов с положительным смещением отдаются отрицательны сдвиги.
22. Panoptik - 29 Сентября, 2015 - 19:02:57 - перейти к сообщению
да блин, какая разница
webog пишет:
Я и задал вопрос: как победить GMT ? Одно время с сервера, другое клиентское.


я вам сказал как решить разницу

с сервера отдаете 3 метки времени и конвертируете их в даты. так как вам нужно не абсолютное (или текущее) время, а всего лишь разницу (внимание! для отображения сколько часов осталось, то не имеет значения в какой часовой зоне сервер или браузер)

с сервера будьто аякс или при загрузке страницы дефайните 3 переменных в формате таймстамп

на клиенте будет примерно так
CODE (javascript):
скопировать код в буфер обмена
  1. var start_ts = 1443541825,
  2.              cur_ts = 1443545000,
  3.              end_ts = 1443549345;

тут нужно учесть что для джаваскрипт таймстамп - это милисекунды, в то время как в пхп - это секунды!
то есть при создании дат мы умножаем каждую метку времени на 1000
CODE (javascript):
скопировать код в буфер обмена
  1. var start_dt = new Date(start_ts * 1000),
  2.              cur_dt = new Date(cur_ts * 1000),
  3.              end_ts = new Date(end_ts * 1000);

это в принципе пример как передать и обработать дату из пхп в джс

далее Внимание! то что я говорил о разделении задач
1) рассчет процентов для прогрессбара и отображения как таковых
2) рассчет остатка времени
3) реализация таймера обратного отсчета исходя из пункта 2

1)
CODE (javascript):
скопировать код в буфер обмена
  1. var abs_ts = end_ts - start_ts; // общее количество секунд на событие
  2. var abs_offset = cur_ts - start_ts; // количество секунд прошедших с начала события
  3. var percent = Math.round(abs_offset / abs_ts * 100); // рассчет процентов


2)
CODE (javascript):
скопировать код в буфер обмена
  1. var left_ts = end_ts - cur_ts; // рассчет сколько секунд осталось
  2. var left_dt = new Date(left_ts*1000); // создание даты
  3. // вывод
  4. console.log('Осталось: ' + left_dt.getUTCHours() + ' часов ' + left_dt.getUTCMinutes() + ' минут');


3) пункт на вашей совести. уже больше чем достаточно было посоветовано
23. webog - 29 Сентября, 2015 - 19:12:20 - перейти к сообщению
Panoptik пишет:
3) пункт на вашей совести. уже больше чем достаточно было посоветовано


Ребята, спасибо что стараетесь и помогаете.
Я это все знаю и понимаю. Скрипт на JS у меня сильно замудрен.
Там не только прогресбар, то и еще %-ты отображаются, полоса заполняется, плюс обновление данных и куча всякой ерунды в которой я не секу.

Короче, все что писали здесь не работает. Нужен видимо иной подход, как вариант тестировать все способы сразу или еще как-то. Скрипт стоит на сайте, кстати.

От слов своих не отказываюсь, за верное решение с меня пивас )
24. webog - 06 Октября, 2015 - 10:12:51 - перейти к сообщению
Подыму. Актуально.
25. Panoptik - 06 Октября, 2015 - 11:06:43 - перейти к сообщению
ты бы за неделю уже книжку прочитал бы. иди учи мат часть. все что можно было для тебя сделать уже сделали.
26. webog - 06 Октября, 2015 - 11:09:05 - перейти к сообщению
Panoptik пишет:
ты бы за неделю уже книжку прочитал бы. иди учи мат часть. все что можно было для тебя сделать уже сделали.


Это понятно. Кому еще нужна денюжка?

P.S. Было бы время читал книжки и сделал бы сам, а так готов заплатить за знания и труд.
27. webog - 08 Июля, 2016 - 14:01:37 - перейти к сообщению
Не актуально. Тему можно закрыть.

 

Powered by ExBB FM 1.0 RC1