Считаем время закачки :)
Мини-скрипт позволяет по известному объёму закачки, заданному в Кб, Мб, Гб или Тб, и заданной скорости закачки (Кбайт/сек., Мбайт/сек., Кбит/сек. или Мбит/сек.) в "человеческих" единицах оценить время, нужное, чтоб всё закачать :) В общем-то, современные менеджеры закачек показывают эту величину нормально, но иногда хочется прикинуть заранее, не калькулятор же мучить? Тем более, есть разные единицы измерения объёмов и скорости, которые я учёл в этом быстро написанном калькуляторе:
Время закачки более года не считает - неактуально :)
Функция time_str (s0)
занимается как раз тем, что переводит время s0
, заданное в секундах, в более крупные единицы времени. Конечно, начиная с часа уже приблизительно. Остальные функции встречались в других скриптах.
Вот полный код файла скрипта:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Калькулятор для вычисления времени закачки</title> </head> <body> <script type="text/javascript"> function trim(string) { return string.replace (/\s+/g, " ").replace(/(^\s*)|(\s*)$/g, ""); } function goodwordform(k,w,o1,o2,o5) { if ( (k%100>10 && k%100<20) || k%10>4 || k%10==0) w+=o5; else if (k%10==1) w+=o1; else w+=o2; return w; } function time_str (s0) { var s=Math.round(s0); if (s<1) return 'Менее 1 сек.'; else if (s<60) return '~ '+s+' сек.'; var minutes=Math.floor(s/60); s-=minutes*60; if (minutes<60) return '~ '+minutes+' мин.'+(s>0?' '+s+' сек.':''); var hours=Math.floor(minutes/60); minutes-=hours*60; if (hours<24) return '~ '+hours+' час.'+(minutes>0?' '+minutes+' мин.':''); var days=Math.floor(hours/24); hours-=days*24; if (days<31) return '~ '+days+' '+goodwordform(days,'д','ень','ня','ней')+' '+(hours>0?' '+hours+' час.':''); var monthes=Math.floor(days/30); days-=monthes*30; if (monthes<12) return '~ '+monthes+' '+goodwordform(monthes,'месяц','','а','ев')+' '+ (days>0?' '+days+' '+goodwordform(days,'д','ень','ня','ней'):''); else return 'Более года'; } function calc () { var o=parseFloat (trim(document.f_result.o.value)); if (isNaN(o) || o<=0) return 'Введите в поле "Объём" положительное число'; else document.f_result.o.value=o; var v=parseFloat (trim(document.f_result.v.value)); if (isNaN(v) || v<=0) return 'Введите в поле "Скорость" положительное число'; else document.f_result.v.value=v; var ob = document.f_result.ob.value; var vb = document.f_result.vb.value; var s=(o*ob)/(v*vb); return time_str(s); } </script> <noscript> <div align="center">Извините, для работы приложения нужен включённый Javascript</div> </noscript> <form name="f_result" method="get"> <table align="center" border="0" cellpadding="2" cellspacing="0"> <tr> <td>Объём закачки:</td> <td><input type="text" size="12" maxlength="10" name="o" value=""></td> <td> <select name="ob" size="1"> <!-- в байтах --> <option value="1024">Килобайт <option value="1048576" selected>Мегабайт <option value="1073741824">Гигабайт <option value="1099511627776">Терабайт </select> </td> </tr> <tr> <td>Скорость закачки:</td> <td><input type="text" size="12" maxlength="10" name="v" value=""></td> <td> <select name="vb" size="1"> <!-- в байтах/сек --> <option value="1024" selected>Кбайт/сек <option value="1048576">Мбайт/сек <option value="128">Кбит/сек <option value="131072">Мбит/сек </select> </td> </tr> <tr> <td colspan="3"><span id="t_result"> </span></td> </tr> <tr> <td colspan="3"><input type="button" value="Вычислить время" onclick="document.getElementById('t_result').innerHTML=calc()"></td> </tr> </table> </form> </body></html>
08.10.2014, 13:44 [9936 просмотров]