11.02.2014

Скрипт школьных часов с привязкой к урокам


lav: существует две Школы Метода Тыка
lav: первая (старая) подразумевает, что ты должен написать обработчик даты-времени самостоятельно, запутавшись во вложенных условиях и сварганить костыль для 31-ого февраля.
lav: Вторая (новая) требует ныть до тех пор, пока не будет обнаружен класс или функция "date()".




Публикую скрипт школьных часов...У меня такие в школе работают...может кому надо...

Писал по принципу "очень быстро", если будут улучшения - пишите...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="ru-RU">

<head>
<meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Школа №21 Ковров</title>
<link rel="shortcut icon" href="favicon.ico" >
<style type='text/css'>
body {background-color:#000000; background-image:url(00.jpg); background-size:100% 120%; background-repeat:no-repeat,no-repeat;}
p {font-family:Arial; font-size:1.2em; color:#ffffff; text-align:center; padding:2px; margin:1px ; border:1px;}
h1 {font-family:Arial; font-size:4.2em; color:#F7A70E; text-align:center; padding:1px; margin:1px ; border:1px;}
h2 {font-family:Arial; font-style:normal; font-size:0.8em; color:#99A5C2; text-align:center; padding:1px; margin:1px ; border:1px;}
h3 {font-family:Arial; font-size:.8em; color:#F7A70E; text-align:center; padding:1px; margin:1px ; border:1px;}
table ,th ,td { margin-left:auto; margin-right:auto;border-style:solid; border-width:2px; border-color:#ffffff;
width:60%; border-collapse:collapse;}
#tab1 td { padding:10px; }

</style>

</head>
<body>


<table id='tab1'>
<tr>
<td>
<p><span id="nameday"></span></p>
<h1><span id="day"></span></h1>
<p><span id="namemonth"></span>  <span id="fullyear"></span></p>
<h1><span id="time"></span></h1><hr>
<p><span id="numberurok"></span>  <span id="numbersmena"></span></p>
<p>от начала прошло: <font color="#F7A70E"><span id="timeot"></span></font></p>
<p>до окончания осталось: <font color="#F7A70E"><span id="timedo"></span></font></p><hr>
<p>до каникул осталось <font color="#F7A70E"><span id="dateege"></span></font> дней</p>
</td>
</tr>
</table>
<script type="text/javascript">
   
      obj_namemonth=document.getElementById("namemonth");
      obj_day=document.getElementById("day");
      obj_nameday=document.getElementById("nameday");
      obj_time=document.getElementById("time");
      obj_numberurok=document.getElementById("numberurok");
      obj_numbersmena=document.getElementById("numbersmena");
      obj_fullyear=document.getElementById("fullyear");
 obj_timeot=document.getElementById("timeot");
 obj_timedo=document.getElementById("timedo");
 obj_dateege=document.getElementById("dateege");

  name_month=new Array ("января","февраля","марта", "апреля","мая", "июня","июля","августа","сентября", "октября","ноября","декабря");
  name_day=new Array ("воскресенье","понедельник", "вторник","среда","четверг", "пятница","суббота");
  function wr_hours()
  {
  time=new Date();
      time_sec=time.getSeconds();
      time_min=time.getMinutes();
      time_hours=time.getHours();
      time_wr=((time_hours<10)?"0":"")+time_hours;
      time_wr+=":";
      time_wr+=((time_min<10)?"0":"")+time_min;
      time_wr+=":";
      time_wr+=((time_sec<10)?"0":"")+time_sec;
      flag_zan = "0"; // флаг отсутствия занятий: 1-занятий нет (ночь или воскресенье), 0-занятия идут

  if (name_day[time.getDay()]=="суббота")// програмирование расписания занятий в будние дни
      {
      u111="08:00:00";u112="08:40:00";
      u121="08:50:00";u122="09:30:00";
      u131="09:40:00";u132="10:20:00";
      u141="10:30:00";u142="11:10:00";
      u151="11:20:00";u152="12:00:00";
      u161="12:10:00";u162="12:50:00";
      u171="12:10:00";u172="12:50:00";
   u211="13:00:00";u212="13:40:00";
      u221="13:50:00";u222="14:30:00";
      u231="14:40:00";u232="15:20:00";
      u241="15:30:00";u242="16:10:00";
      u251="16:20:00";u252="17:00:00";
   u261="16:20:00";u262="17:00:00";
      }
   else  // програмирование расписания занятий в субботу
      {
      u111="08:00:00";u112="08:40:00";
      u121="08:50:00";u122="09:30:00";
      u131="09:50:00";u132="10:30:00";
      u141="10:40:00";u142="11:20:00";
      u151="11:35:00";u152="12:15:00";
      u161="12:25:00";u162="13:05:00";
      u171="13:10:00";u172="13:50:00";
      u211="14:00:00";u212="14:40:00";
      u221="14:50:00";u222="15:30:00";
      u231="15:50:00";u232="16:30:00";
      u241="16:40:00";u242="17:20:00";
      u251="17:30:00";u252="18:10:00";
      u261="18:20:00";u262="19:00:00";
      }
    if (name_day[time.getDay()]=="воскресенье") {text= "в настоящий момент";smena="занятий нет";time_start="24:00:00"; time_fin=u111; flag_zan = "1";}
else if (time_wr>u111 && time_wr<u112){text= "идет 1-й урок";smena="1-й смены";time_start=u111;time_fin=u112;}
    else if (time_wr>u112 && time_wr<u121){text= "идет перемена между 1-м и 2-м уроком";smena="1-й смены";time_start=u112;time_fin=u121;}
    else if (time_wr>u121 && time_wr<u122){text= "идет 2-й урок";smena="1-й смены";time_start=u121;time_fin=u122;}
    else if (time_wr>u122 && time_wr<u131){text= "идет перемена между 2-м и 3-м уроком";smena="1-й смены";time_start=u122;time_fin=u131;}
    else if (time_wr>u131 && time_wr<u132){text= "идет 3-й урок";smena="1-й смены";time_start=u131;time_fin=u132;}
    else if (time_wr>u132 && time_wr<u141){text= "идет перемена между 3-м и 4-м уроком";smena="1-й смены";time_start=u132;time_fin=u141;}
    else if (time_wr>u141 && time_wr<u142){text= "идет 4-й урок";smena="1-й смены";time_start=u141;time_fin=u142;}
    else if (time_wr>u142 && time_wr<u151){text= "идет перемена между 4-м и 5-м уроком";smena="1-й смены";time_start=u142;time_fin=u151;}
    else if (time_wr>u151 && time_wr<u152){text= "идет 5-й урок";smena="1-й смены";time_start=u151;time_fin=u152;}
    else if (time_wr>u152 && time_wr<u161){text= "идет перемена между 5-м и 6-м уроком";smena="1-й смены";time_start=u152;time_fin=u161;}
    else if (time_wr>u161 && time_wr<u162){text= "идет 6-й урок";smena="1-й смены";time_start=u161;time_fin=u162;}
else if (time_wr>u162 && time_wr<u171){text= "идет перемена между 6-м и 7-м уроком";smena="1-й смены";time_start=u162;time_fin=u171;}
else if (time_wr>u171 && time_wr<u172){text= "идет 7-й урок";smena="1-й смены";time_start=u171;time_fin=u172;}
    else if (time_wr>u172 && time_wr<u211){text= "уроков нет";smena="пересменка";time_start=u172;time_fin=u211;}
    else if (time_wr>u211 && time_wr<u212){text= "идет 1-й урок";smena="2-й смены";time_start=u211;time_fin=u212;}
    else if (time_wr>u212 && time_wr<u221){text= "идет перемена между 1-м и 2-м уроком";smena="2-й смены";time_start=u212;time_fin=u221;}
    else if (time_wr>u221 && time_wr<u222){text= "идет 2-й урок";smena="2-й смены";time_start=u221;time_fin=u222;}
    else if (time_wr>u222 && time_wr<u231){text= "идет перемена между 2-м и 3-м уроком";smena="2-й смены";time_start=u222;time_fin=u231;}
    else if (time_wr>u231 && time_wr<u232){text= "идет 3-й урок";smena="2-й смены";time_start=u231;time_fin=u232;}
    else if (time_wr>u232 && time_wr<u241){text= "идет перемена между 3-м и 4-м уроком";smena="2-й смены";time_start=u232;time_fin=u241;}
    else if (time_wr>u241 && time_wr<u242){text= "идет 4-й урок";smena="2-й смены";time_start=u241;time_fin=u242;}
    else if (time_wr>u242 && time_wr<u251){text= "идет перемена между 4-м и 5-м уроком";smena="2-й смены";time_start=u242;time_fin=u251;}
    else if (time_wr>u251 && time_wr<u252){text= "идет 5-й урок";smena="2-й смены";time_start=u251;time_fin=u252;}
    else if (time_wr>u252 && time_wr<u261){text= "идет перемена между 5-м и 6-м уроком";smena="2-й смены";time_start=u252;time_fin=u261;}
    else if (time_wr>u261 && time_wr<u262){text= "идет 6-й урок";smena="2-й смены";time_start=u261;time_fin=u262;}
    else if (time_wr>u262){text= "в настоящий момент";smena="занятий нет";time_start=u262;time_fin="24:00:00"; flag_zan = "1";}
    else if (time_wr<u111){text= "в настоящий момент";smena="занятий нет";time_start="00:00:00";time_fin=u111; flag_zan = "1";}

    // вычисление времени от начала урока или перемены
time_start_hh = time_start.substring(0,2);time_start_mm = time_start.substring(3,5);
start = new Date(time.getFullYear(),time.getMonth(),time.getDay(),time_start_hh,time_start_mm,0);
real = new Date(time.getFullYear(),time.getMonth(),time.getDay(),time.getHours(),time.getMinutes(),time.getSeconds());
date = (real.getTime() - start.getTime()) / (1000) ; time_real = Math.round(date);
min = Math.round((real.getTime()-start.getTime())/60000);
if (flag_zan == "1"){sec = "0"; min = "00";}
else if (time.getSeconds()<30) {sec = (real.getTime()-start.getTime())/1000-min*60;}
else {sec = (real.getTime()-start.getTime())/1000-min*60+60;min=min-1;}
sec=((sec<10)?"0":"")+sec; timeot = min + ":" + sec;

// вычисление времени до окончания урока или перемены
time_fin_hh = time_fin.substring(0,2);time_fin_mm = time_fin.substring(3,5);
fin = new Date(time.getFullYear(),time.getMonth(),time.getDay(),time_fin_hh,time_fin_mm,0); //осталось
real = new Date(time.getFullYear(),time.getMonth(),time.getDay(),time.getHours(),time.getMinutes(),time.getSeconds());
date = (-real.getTime() + fin.getTime()) / (1000) ; time_real = Math.round(date);
min = Math.round((-real.getTime()+fin.getTime())/60000);
if (flag_zan == "1"){sec = "0"; min = "00";}
else if (time.getSeconds()<30) {sec = (-real.getTime()+fin.getTime())/1000-min*60+60;min=min-1;}
else {sec = (-real.getTime()+fin.getTime())/1000-min*60;}
sec=((sec<10)?"0":"")+sec; timedo = min +":"+ sec;

// вычисление количества дней до какого-либо события
ege = new Date(2014,02,20,9,0,0); //осталось до 1-триместра
real = new Date();
dateege = (ege-real)/86400000-30; dateege = Math.round (dateege);

 obj_namemonth.innerHTML=name_month[time.getMonth()];
      obj_day.innerHTML=time.getDate();
      obj_nameday.innerHTML=name_day[time.getDay()];
      obj_time.innerHTML=time_wr;
      obj_numberurok.innerHTML=text;
      obj_numbersmena.innerHTML=smena;
      obj_fullyear.innerHTML=time.getFullYear()+" года";
 obj_timeot.innerHTML=timeot;
 obj_timedo.innerHTML=timedo;
 obj_dateege.innerHTML=dateege;
}
      wr_hours();
      setInterval("wr_hours();",1000);
 </script>
<br><br><br><br><br><br><br><br>
    <h2>Внимание, школьные часы работают в экспериментальнм режиме, проверяйте время !</h2>
</body>
</html>

Комментариев нет:

Отправить комментарий