[Ищу] Код считающий дни

Статус
В этой теме нельзя размещать новые ответы.

AggreSSor

Участник
Регистрация
28 Фев 2009
Сообщения
222
Реакции
6
Нужен код, который считал бы не только дни, но и месяца, года, часы, минуты и секунды.
Пример: Нам уже 3 года 5 месяцев 25 дней 17 часов 58 минут 30 секунд.
По идее это просто написать на JavaScript, но к сожалению нет знаний.
Видел случайно такую считалку на одном сайте, но теперь того сайта нет, а код понадобился.
Заранее благодарен
 
Показывают количество дней, часов, минут, секунд.

Немного не совсем то что вы хотели, но возможно подайдёт если не найдёте ничего лучшего.
 
Показывают количество дней, часов, минут, секунд.
*** скрытое содержание ***
Немного не совсем то что вы хотели, но возможно подайдёт если не найдёте ничего лучшего.
это конечно хорошо, но немного не то, что нужно.
надо еще месяца и года, чтобы при достижении 30 или 31 дней переводился в месяц
 
Вот откопал у себя в загашниках и немного причесал
HTML:
<html>
<body>
        <script type="text/javascript">
        const startPoint = new Date("1 Jan 2010 0:00:00");
        const MINUTE = 60;
        const HOUR = 60 * MINUTE;
        const DAY = 24 * HOUR;
        const MONTH = 30 * DAY;
        const YEAR = 365 * DAY;
        function updateTimer(){
                var field = document.getElementById("timerField");
                var timer = (new Date() - startPoint)/1000;
                var years = Math.floor(timer/YEAR);
                var months = Math.floor((timer - years * YEAR)/MONTH);
                var days = Math.floor((timer - years * YEAR - months * MONTH )/DAY);
                var hours = Math.floor((timer - years * YEAR - months * MONTH - days * DAY)/HOUR);
                var minutes = Math.floor((timer - years * YEAR - months * MONTH - days * DAY - hours * HOUR)/MINUTE);
                var seconds = Math.floor(timer - years * YEAR - months * MONTH - days * DAY - hours * HOUR - minutes * MINUTE);
                field.innerHTML = 'Нам ' + years + ' лет ' + months + ' месяцев ' + days + ' дней ' + 
                        hours + ' часов ' + minutes + ' минут ' + seconds + ' секунд;)';
        }
        setInterval(updateTimer,1000)
        </script>
        <span id="timerField"></span>
</body>
</html>
 
Пробовал.
Но скрипт не работает
 
У меня в IE не работает, во всех остальных браузерах работает.
 
В общем после 2х часов гуляния по гуглу вроде нашел то что нужно.
HTML:
<form name="dates">
   <strong>Прошло с момента рождения:</strong><br>
   <input type="text" size="67" name="passed"></strong><br>
   <strong>Осталось до ближайшего дня рождения:</strong><br>
   <input type="text" size="67" name="topass"></strong>
</form>

<SCRIPT LANGUGE="JavaScript">
<!--

function IsLeapYear (Year) {
  return ((Year % 4) == 0) && (((Year % 100) != 0) || ((Year % 400) == 0))
}

function DaysPerMonth (Year, Month) {
   DaysInMonth = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

   if (Month == -1) Month = 11

   days=DaysInMonth [Month]
   if ((Month == 1) && IsLeapYear(Year)) {days++}
   return days
}

function DiffDateTime (DTa, DTb) {
   maxValues = new Array (0, 12, 0, 24, 60, 60)

   for (i=5; i>=0; i--) {
     if (DTa[i]<DTb[i] && i>0) {
        DTa[i-1]--
        DTa[i] += maxValues[i] - DTb[i]
        if (i==2) DTa[i] += DaysPerMonth (DTa[0], DTa[1])
     } else {
       DTa[i] -= DTb[i]
     }
   }

   return DTa
}

function TimeToString (value, str1, str2, str5) { 
   if (!value) return 0
   mod = value % 10
   if ((value%100)>=10 && (value%100)<=19) return str5
   if (mod == 1) return str1
   if (mod >= 2 && mod <= 4) return str2
   return str5
}  

function DaysLeftText (Year, Month, Day, Hour, Minute, Second) {

   tYear   = TimeToString (Year, 'год', 'года', 'лет')
   tMonth  = TimeToString (Month, 'месяц', 'месяца', 'месяцев')
   tDay    = TimeToString (Day, 'день', 'дня', 'дней')
   tHour   = TimeToString (Hour, 'час', 'часа', 'часов')
   tMinute = TimeToString (Minute, 'минута', 'минуты', 'минут')
   tSecond = TimeToString (Second, 'секунда', 'секунды', 'секунд')

   preValues = new Array (Year, Month, Day, Hour, Minute, Second)
   preTexts = new Array (tYear, tMonth, tDay, tHour, tMinute, tSecond)

   numPartsPresent=0
   for (i=5; i>=0; i--) if (preValues[i]!=0) numPartsPresent++

   text=''
   for (i=5; i>=0; i--) {
      if (preValues[i]!=0) {
         text=preValues[i]+' '+preTexts[i]+' '+text
         if (numPartsPresent>1) {
            text='и '+text
            numPartsPresent=0
         } 
      }
   }

   return text
}

function OnTimer () {
   Now = new Date()
   nowYear=Now.getYear ()
   if (nowYear<200) nowYear=nowYear+1900

   // Time passed since my birth
   DTa = new Array (nowYear, Now.getMonth (), Now.getDate (), Now.getHours (), Now.getMinutes (), Now.getSeconds ())
   DTb = new Array (1978, 6, 17, 12, 0, 0)
   DTc = DiffDateTime (DTa, DTb)

   // Time to my nearest birtday
   nextBDY=nowYear
   if ((Now.getMonth ()>6) || (Now.getMonth()==6 && (Now.getDay()>17 || (Now.getDay()=17 && Now.getHours()>12)))) nextBDY++
   DTa = new Array (nowYear, Now.getMonth (), Now.getDate (), Now.getHours (), Now.getMinutes (), Now.getSeconds ())
   DTb = new Array (nextBDY, 6, 17, 12, 0, 0)
   DTd = DiffDateTime (DTb, DTa)

   document.dates.passed.value=DaysLeftText (DTc[0],DTc[1],DTc[2],DTc[3],DTc[4],DTc[5]);
   document.dates.topass.value=DaysLeftText (DTd[0],DTd[1],DTd[2],DTd[3],DTd[4],DTd[5]);
}

setInterval("OnTimer()",500);

-->
</script>

только вот маленько нужно его подпилить, чтобы не показывалось это дело в форме и каким-то образом разделить счётчик и таймер
 
причитайте внимательнее мой запрос. мне не нужны только дни и мне не нужны только года, месяца и дни.
Мне нужно вплоть до часов, минут и секунд, кроме недель

Но всё равно спасибо
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху