Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 15.07.2012
Сообщений: 38

JS таймер

13.05.2013, 08:02. Показов 1093. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно код. Вычисляет время до определенной даты.
Проблема: В опере отображается в секундах...
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript">
            function dateDiff (dateFrom, dateTo, inObjectPlease) 
            {
                // Нормализуем данные
                dateFrom = dateFrom || new Date(); dateTo = dateTo || new Date ();
                dateFrom = Date.parse(new Date(dateFrom)); dateTo = Date.parse (new Date(dateTo));
                // Объявим всё, что нужно для работы.
                var secDiff = (dateTo - dateFrom) / 1000, x;
                var subZero = false, dividers = [60, 60, 24, 30.5, 12];
                var result = {
                years: 0,
                months: 0,
                days: 0,
                hours: 0,
                minutes: 0,
                seconds: 0
            }
            /*
                    Если разница отрицательна, запомним это и сделаем её положительной,
                для упрощения расчётов.
            */
            if (secDiff < 0) 
            {
                subZero = true;
                secDiff *= -1;
            }
            /*
                    Функция arrayMultiply возвращает произведение элементов 
                    переданного ей массива.
            */
            function arrayMultiply (arr) 
            {
                var result = 1, x;
                for (x = 0; x < arr.length; x++) 
                {
                    result *= arr[x];
                }
                return result;
            }
            /*
                    Функция pickWord возвращает слово в форме, подходящей для
                переданной функции цифре. Принимает цифру и три формы слова —
                для значения 1, для значения 2 и для значения 5.
            */
            function pickWord(num, txt1, txt2_4, txt5) {
                var symb;
                num = parseInt(num);
                if (isNaN(num)) 
                {
                    return txt1;
                }
                num = String(num);
                if (num.length > 1) 
                {
                    symb = num.substr(-2);
                    symb = +symb;
                    if (symb >= 10 && symb <= 20) 
                    {
                        return txt5;
                    }
                }
                symb = num.substr(-1);
                symb = +symb;
                if (symb === 1) 
                {
                    return txt1;
                }
                if (symb >= 2 && symb <= 4) 
                {
                    return txt2_4;
                }
                return txt5;
            }
            /*
                    Вспомогательная функция next уменьшает количество делителей
                и разницу в секундах на необходимые значения.
            */
            function next(success, subtrahend) 
            {
                if (success) 
                {
                    secDiff -=  subtrahend;
                }
                if (dividers.length > 0) 
                {
                    dividers.length -= 1;
                }
            }
            // Присваиваем каждому полю объекта result соответствующее значение.
            for (x in result) 
            {
                result[x] = (secDiff - secDiff % arrayMultiply(dividers)) / arrayMultiply(dividers);
                next(result[x], (secDiff - secDiff % arrayMultiply(dividers)));
                if (subZero) 
                {
                    result[x] *= -1;
                }
            }
            if (inObjectPlease) 
            {
                return result
            }
            // формируем строку.
            result.result = result.years ? result.years + pickWord(result.years, " год ", " года ", " лет "): "";
            result.result += result.months ? result.months + pickWord(result.months, " месяц ", " месяца ", " месяцев "): "";
            result.result += result.days ? result.days + pickWord(result.days, " день ", " дня ", " дней "): "";
            result.result += result.hours ? result.hours + pickWord(result.hours, " час ", " часа ", " часов "): "";
            result.result += result.minutes ? result.minutes + pickWord(result.minutes, " минута ", " минуты ", " минут "): "";
            result.result += result.seconds ? result.seconds + pickWord(result.seconds, " секунда ", " секунды ", " секунд "): "";
            return result.result;
            }
            function get()
            {
                date_from = new Date();
                date_to = "2015/10/01 00:00:00";
                return dateDiff(date_from, date_to);
            }
            function digitalWatch(diff) 
            {
            diff = get();
            document.getElementById("digital_watch").innerHTML = diff;
            setTimeout("digitalWatch()", 001);
            }
            </script>
        </head>
 
        <body onload="digitalWatch()">
    <table width="100%" border="1">
        <tr bgcolor="Yellow">
            <td><div align="center" style="color: #f00; font-size: 560%; font-weight: bold;">MemoryТоAll.ru</div></td>
        </tr>
        <tr>
            <td><p align="center" id="digital_watch" style="color: #000; font-size: 200%; font-weight: bold;"></p></td>
        </tr>
    </table>
        
    </body>
</html>


http://memorytoall.ru/ например
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2013, 08:02
Ответы с готовыми решениями:

Таймер должен через время положить файл на БД. [Таймер]
Мне нужен таймер, а я не знаю как его делать именно, чтоб в конкретное время он сохранял информацию в файл. Чтобы он в конкретный период...

Поясните за таймер!) Или таймер на формах наследниках
Доброго. В проге есть основная форма и в процессе работы создается 1-2-3-4-5 форм наследников все одного типа, но вот в чем загвоздка, на...

Таймер похожий на таймер в delphi
Добрый всем)В общем хочу создать класс таймера похожий на класс таймера на delphi.Суть в том,что я хочу включать и выключать таймер за счет...

5
33 / 33 / 6
Регистрация: 14.03.2013
Сообщений: 89
13.05.2013, 17:13
Черт ногу сломит, а чем не устраивают стандартные методы работы со временем?
0
0 / 0 / 0
Регистрация: 15.07.2012
Сообщений: 38
13.05.2013, 20:20  [ТС]
Подскажите как тогда реализовать подобное "проще" без потери формата?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.05.2013, 06:35
кроме того, что в Опере глючит, ваш таймер ещё и привирает
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<script>
onload = function ()
{
setInterval (function ()
{
var fY = 2015, fM = 10, fD = 1, fH = fm = fS = 0;                       // 1 íîÿáðÿ 2015 ãîäà, ïîëíî÷ü
 
var nT = new Date ().getTime ();
 
var Y = 0; while (new Date (fY - Y, fM    , fD    , fH    , fm    , fS    ).getTime () > nT) Y++; Y--;
var M = 0; while (new Date (fY - Y, fM - M, fD    , fH    , fm    , fS    ).getTime () > nT) M++; M--;
var D = 0; while (new Date (fY - Y, fM - M, fD - D, fH    , fm    , fS    ).getTime () > nT) D++; D--;
var H = 0; while (new Date (fY - Y, fM - M, fD - D, fH - H, fm    , fS    ).getTime () > nT) H++; H--;
var m = 0; while (new Date (fY - Y, fM - M, fD - D, fH - H, fm - m, fS    ).getTime () > nT) m++; m--;
var S = 0; while (new Date (fY - Y, fM - M, fD - D, fH - H, fm - m, fS - S).getTime () > nT) S++; S--;
 
function addText (n, w)
{
var j, e = n.toString ().slice (-1);
     if (!n) return ' ';
     if (n > 10 && n < 20) j = 2;
else if (e == 0)           j = 2;
else if (e == 1)           j = 0;
else if (e < 5 )           j = 1;
else                       j = 2;                            
return n + ' ' + w [j];
}
 
Y = addText (Y, ['ãîä'    , 'ãîäà'   , 'ëåò'    ]),
M = addText (M, ['ìåñÿö'  , 'ìåñÿöà' , 'ìåñÿöåâ']),
D = addText (D, ['äåíü'   , 'äíÿ'    , 'äíåé'   ]),
H = addText (H, ['÷àñ'    , '÷àñà'   , '÷àñîâ'  ]),
m = addText (m, ['ìèíóòà' , 'ìèíóòû' , 'ìèíóò'  ]),
S = addText (S, ['ñåêóíäà', 'ñåêóíäû', 'ñåêóíä' ]);
 
document.getElementById ('digital_watch').innerHTML = ([Y, M, D, H, m, S].join (' '));
}, 1000);
}
</script>
 
<p id="digital_watch"></p>
0
0 / 0 / 0
Регистрация: 15.07.2012
Сообщений: 38
14.05.2013, 06:39  [ТС]
хм =) действительно, спасибо)
0
 Аватар для Programmer1993
44 / 24 / 1
Регистрация: 22.05.2012
Сообщений: 669
03.11.2014, 14:16
Подскажите как данный таймер переделать, чтобы он отсчитывал сколько дней прошло от определенной даты до нышего времени
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2014, 14:16
Помогаю со студенческими работами здесь

Таймер, вложенный в таймер
Доброго времени суток. Я новичек, С знаю плохо. Сделал небольшой проект на Arduino, но остался последний штрих: нужно таймер вложить в...

Звук и таймер - реализовать классы: "зв. сигал", "таймер" и "секундомер-сигнализатор"
Подскажите пожалуйста, дано задание реализовать классы: &quot;зв. сигал&quot;, &quot;таймер&quot; и &quot;секундомер-сигнализатор&quot;. Какие библиотеки...

Таймер
После выполнения подпрограммы выход из неё происходит в секцию Init, а не в rcall Timer. Где косяк ? .include &quot;m8def.yms&quot; ...

Таймер
И снова здравствуйте! Ребята, вот какой вопрос. Можно ли на каждый открытый документ навесить свой таймер? Событие таймера должно...

Таймер
Подскажите пожалуйста как можно сделать что бы таймер чаще срабатывал чем 1 сек. Допустим у меня есть картинка которая двигается по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru