Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Разница дат - скрипт (http://forum.oszone.net/showthread.php?t=154026)

Кощей 23-10-2009 01:54 1249976

Разница дат - скрипт
 
В принципе, все меня устраивает, но кое-что таки хочется уточнить.

Код:

<script language=JavaScript>
<!--
d0 = new Date('October 22, 2009');
d1 = new Date();
dt = (d1.getTime() - d0.getTime()) / (1000*60*60*24);
document.write('ололо ололо уже <B>' + Math.round(dt) + '</B>-й дней.');
-->
</script>


1. (1000*60*60*24) - на что влияют эти значения?
2. Минимальная дата отсчета - 100 год. Двузначные числа типа 99 или 85 автоматически принимаются, как я понял, за 1999 и 1985 соответственно. А при выставлении года меньше, чем 70 вместо "столько-то дней" пишется "NaN-дней". А при определенных манипуляциях с параметрами (1000*60*60*24) иногда получалось и "Infinity-дней" ;)
3. Собственно, можно ли посчитать таким счетчиком количество дней с 1 января 1 года?
4. И как бы, в зависимости от цифры (напр. 1 день, 2 дня, 5 дней), изменить форму слова "дней"?

Coutty 23-10-2009 04:01 1249990

1. При вычитании двух дат получается число миллисекунд. Чтобы перевести это число в дни, нужно разделить его на миллисекунды (1000), секунды (60), минуты (60) и часы (24). Хотя кто-то и сразу знает, что секунд в сутках 86400, но чтобы не путаться можно и так писать.
3. Считайте количество дней до 100 года и вычитайте заранее посчитанное число дней до 1 янв. 1 года.
4. Условным оператором.
Код:

ost = dt % 10; // берём остаток от деления и его сравниваем
switch (ost) {
  case 0: case 5: case 6: case 7: case 8: case 9: text = " дней"; break;
  case 1: text = " день"; break;
  case 2: case 3: case 4: text = " дня"; break;
}



Время: 18:35.

Время: 18:35.
© OSzone.net 2001-