Есть progressbar на JS. Работает отлично, но если часовой пояс отличный от времени сервера начинает работать не точно. Если разница 5 часов, то и показывает на прогрессбаре не сутки допустим, а 19 часов. А должно 24 часа.
Вопрос: как победить GMT на яве? Или я в не ту сторону думаю?
вот код (Отобразить)
CODE (javascript):
скопировать код в буфер обмена
скопировать код в буфер обмена
- <script type="text/javascript">
- $(document).ready(function(){
- jQuery.fn.anim_progressbar = function (aOptions) {
- // Определяем значения
- var iCms = 1000;
- var iMms = 60 * iCms;
- var iHms = 3600 * iCms;
- var iDms = 24 * 3600 * iCms;
- // Определяем опции
- var aDefOpts = {
- //var date = new Date(2013, 7, 15, 12, 45, 12);
- //document.write(date);
- //start: new Date(2015, 8, 8, 14, 30, 12), // Текущее время
- start: new Date(<?php echo $startd; ?>),
- //finish: new Date().setTime(new Date().getTime() + 1500 * iCms), // Текущее время + 60 сек
- //finish: new Date(2015, 8, 8, 15, 30, 12),
- finish: new Date(<?php echo $datat; ?>),
- interval: 100
- }
- var aOpts = jQuery.extend(aDefOpts, aOptions);
- var vPb = this;
- // Кажды индикаторо прогресса
- return this.each(
- function() {
- var iDuration = aOpts.finish - aOpts.start;
- // Вызываем оригинальны йиндикатор прогресса
- $(vPb).children('.pbar').progressbar();
- // Процесс обработки
- var vInterval = setInterval(
- function(){
- var iLeftMs = aOpts.finish - new Date(); // Оставшееся врмея в миллисекундах
- var iElapsedMs = new Date() - aOpts.start, // Прошедшее время в миллисекундах
- iDays = parseInt(iLeftMs / iDms), // Прошло дней
- iHours = parseInt((iLeftMs - (iDays * iDms)) / iHms), // Прошло часов
- iMin = parseInt((iLeftMs - (iDays * iDms) - (iHours * iHms)) / iMms), // Прошло минут
- iSec = parseInt((iLeftMs - (iDays * iDms) - (iMin * iMms) - (iHours * iHms)) / iCms), // Прошло секунд
- iPerc = (iElapsedMs > 0) ? iElapsedMs / iDuration * 100 : 0; // Процент выполнения
- // Выводим текущее положение и прогресс
- $(vPb).children('.percent').html('<b>'+iPerc.toFixed(1)+'%</b>');
- $(vPb).children('.elapsed').html('Осталось '+iDays+' дн. '+iHours+' ч. '+iMin+' мин.:'+iSec+' сек.</b>');
- $(vPb).children('.pbar').children('.ui-progressbar-value').css('width', iPerc+'%');
- // В случае завершения
- if (iPerc >= 100) {
- clearInterval(vInterval);
- $(vPb).children('.percent').html('<b>100%</b>');
- $(vPb).children('.elapsed').html('Завершено');
- setTimeout(
- function() {
- location.reload();
- }, 4000
- );
- }
- } ,aOpts.interval
- );
- }
- );
- }
- // Режим по умолчанию
- $('#progress1').anim_progressbar();
- // Для секунд с 5-й по 15-ю
- var iNow = new Date().setTime(new Date().getTime() + 5 * 1000); // Теперь прибавляем по 5 секунд
- var iEnd = new Date().setTime(new Date().getTime() + 15 * 1000); // Теперь прибавляем по 15 секунд
- $('#progress2').anim_progressbar({start: iNow, finish: iEnd, interval: 100});
- // Устанавливаем интервал обновления в 1 секунду
- $('#progress3').anim_progressbar({interval: 1000});
- });
- </script>