вторник, 28 июня 2011 г.

JavaScript. Последний отсчёт

Будем считать количество часов или дней до какой-нибудь знаменательной даты. Например, до дня рождения, до Нового года, до начала отпуска, ну, или как у меня. :) Как всегда, добавляем новый гаджет «HTML/JavaScript» и копируем такой код:

<div id="datecounter"></div>
<script type="text/javascript">
var ts = new Date(2012,0,15) - new Date();
var str = "" + Math.round(ts / 3600000);
var len = str.length;
var html = "<b>уже наступил!</b>";
var t = "часов";
if (ts > 0) {
  if (len == 1 || (len > 1 && str[len - 2] != '1')) {
    switch (str[len - 1]) {
      case '1':
        t = "час";
        break;
      case '2':
      case '3':
      case '4':
        t = "часа";
    }
  }
  html = "через <b>" + str + "</b> " + t;
}
document.getElementById("datecounter").innerHTML = html;
</script>

Дата нашего события задаётся в строчке:

var ts = new Date(2012,0,15) - new Date();

В скобках указываем год, месяц, день. Обратите внимание: счёт месяцев начинается с нуля! Т.е. дата в нашем примере — это 15 января 2012 года. Если интересующее событие начинается не в 0:00, а, скажем, в пол-первого, можно учесть и это, добавив в строчке с датой и время:

var ts = new Date(2012,0,15,12,30) - new Date();

Следующая строка кода переводит отрезок времени (который измеряется в милисекундах) в часы. Если нас интересует измерение в днях, то придётся изменить эту строку так:

var str = "" + Math.round(ts / 86400000);

Кроме того, Капитан Очевидность подсказывает, что дальше в коде нужно заменить "часов" на "дней", "час" на "день", а "часа" на "дня". :)

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

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

Го вверх!