Источник информации: Заметки HTML кодера
Недавно для сайта московского кинофестиваля мне необходимо было написать скриптик, который бы определял, сколько же дней осталось до открытия феста 21 июня 2002 года. Это мне было нужно для вывода надписи типа «До открытия кинофестиваля осталось 20 дней».
Разницу между датами (текущей и «часа Икс»)
найти несложно:
var oToday = new Date(); // текущая дата
var sTime = "June 21, 2002 " + oToday.getHours() + ":" + oToday.getMinutes() + ":" + oToday.getSeconds(); // задаём время с точностью до секунды это не педантизм, а важная деталь, избавляющая от багов при вычислении разницы между датами
var oDeadLineDate = new Date(sTime); // собственно устанавливаем «час Икс»
var nDaysLeft = oDeadLineDate > oToday ? Math.ceil((oDeadLineDate - oToday) / (1000 * 60 * 60 * 24)) : null; // а тут мы вычисляем, сколько же осталось дней находим разницу в миллисекундах и переводим её в дни
Итак, мы определили, сколько же осталось дней до знаменательного события. Чудесно.
А теперь в игру вступает великий и могучий русский язык. Дело в том, что слова «осталось
дней» нужно выводить иногда как «остался
день», «осталось
дня» и т.п.
Поэтому необходим следующий код, отслеживающий закономерности:
Поскольку начало XXIV кинофестиваля уже свершившийся факт, для примера приведу, сколько дней осталось до моего дня рождения ;-)
|