-Cross- Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 У меня есть JS сркипт который показывает время жизни сайта (в моём случаи форума).Помогите его отредактировать.У меня показывает:Форум в сети: 5-й месяц 24-й день.Как сделать что бы показывало:Форум в сети: 4 месяца 23 дня?Скрипт:<script language="JavaScript"> <!-- function rus(n,a1,a2,a3){ var s=new String(n); if(s.length>=2&s.substr(-2,1)=="1") return a1; switch(s.charAt(s.length-1)){case"1":return a2;case"2":case"3":case"4":return a3;} return a1;} function countUp(){ x=true; showYear=false; start=new Date('June 19, 2007'); dd=new Date();d0=dd.getDate();d1=start.getDate();m0=dd.getMonth();m1=start.getMonth();y0=dd.getFullYear();y1=start.getFullYear(); var _m=(y0-y1)*12+(m0-m1);var _d=0;txt=""; if(d0>d1){_d=d0-d1;if(x){_m++;_d++;}} if(d0<d1){__y=(m0==0)?y0-1:y0;__m=(m0==0)?11:m0-1;_d=(new Date(y0,m0,d0,0,0,0)-new Date(__y,__m,d1,0,0,0))/(1000*24*60*60);if(!x){_m--;_d--;}} if(d0==d1) txt="Форуму <b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца")+" <font color=red>РОВНО!</font>"; _y = Math.floor((_m-1)/12);if(x)_y++; if(d0==d1&m0==m1) txt="Форуму <b>"+_y+"</b> "+rus(_y,"лет","год","года")+" <font color=red>РОВНО!</font>"; _m=(_y>0&showYear)?_m%12:_m; ty=(showYear&_y>0)?"<b>"+_y+"</b> "+rus(_y,"лет","год","года"):""; tm=(_m>0)?"<b>"+_m+"</b> "+rus(_m,"месяцев","месяц","месяца"):""; _d=Math.ceil(_d); td="<b>"+_d+"</b> "+rus(_d,"дней","день","дня"); if(x){ ty=(showYear)?"<b>"+_y+"</b>-й год":""; tm="<b>"+_m+"</b>-й месяц"; td="<b>"+_d+"</b>-й день"; if(txt=="")txt="Форум в сети: "+ty+" "+tm+" "+td+"."; }else if(txt=="")txt="Форуму уже: "+ty+" "+tm+" "+td+"."; document.write(txt); } //--></script> ЗЫ: И можно ли как нибудь уменьшить код? наверняка найдутся ненужные функции... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 Ну дык в чем проблема-то? Вместо этогоstart=new Date('June 19, 2007'); Вот этоstart=new Date('July 20, 2007'); Ты дату рождения форума не знаешь чтоли? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Cross- Опубликовано 11 Ноября 2007 Автор Жалоба Поделиться Опубликовано 11 Ноября 2007 Очень умно.5-ый месяц, это значит что сейчас идёт 5-ый месяц, а прошло 4..., 24-ый день идёт сейчас, а прошло 23...не ужели непонятно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
xRay Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 Я тебе правку привел Если ты не проверил, то после правки он показывает то что ты хотел т.е. то что ты описал в первом посте этой темы. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 нет, он другое хочет пятый месяц значит прошло уже 4 и идет пятыйтак вот, он хочет, чтоб показывало: "прошло уже 4" Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 У меня нечто похожее сделано на php: срок трезвости (форум алкоголиков). Дата начала трезвости сделана через дополнительные поля профиля.Обсчет:$base_prefix = $author[field_2]; $base_day = $author[field_3]; $base_mon = $author[field_4]; $base_yr = $author[field_5]; if(IsSet($base_prefix) and strlen($base_prefix) < 40 and strlen($base_prefix) > 2){ if(IsSet($base_day) and IsSet($base_mon) and IsSet($base_yr)) { $current_day = date ("j"); $current_mon = date ("n"); $current_yr = date ("Y"); $base_mon_max = date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr)); $base_day_diff = $base_mon_max - $base_day; $base_mon_diff = 12 - $base_mon - 1; $start_day = 1; $start_mon = 1; $start_yr = $base_yr + 1; $day_diff = ($current_day - $start_day) + 1; // add today $mon_diff = ($current_mon - $start_mon) + 1; // add current month $yr_diff = ($current_yr - $start_yr); $day_diff = $day_diff + $base_day_diff; $mon_diff = $mon_diff + $base_mon_diff; if ($day_diff >= $base_mon_max) { $day_diff = $day_diff - $base_mon_max; $mon_diff = $mon_diff + 1; } if ($mon_diff >= 12) { $mon_diff = $mon_diff - 12; $yr_diff = $yr_diff + 1; } $years = "лет"; $month = "месяцев"; $days = "дней"; if ($yr_diff%10 == "1" and $yr_diff!="11") $years = "год"; if ($yr_diff%10 == "2" and $yr_diff!="12") $years = "года"; if ($yr_diff%10 == "3" and $yr_diff!="13") $years = "года"; if ($yr_diff%10 == "4" and $yr_diff!="14") $years = "года"; if ($mon_diff == "1") $month = "месяц"; if ($mon_diff == "2" or $mon_diff == "3" or$mon_diff == "4") $month = "месяца"; if ($day_diff == "1" or $day_diff == "21" or$day_diff == "31") $days = "день"; if ($day_diff == "2" or $day_diff == "3" or $day_diff == "4" or $day_diff == "22" or $day_diff == "23" or $day_diff == "24" or $day_diff == "31") $days = "дня"; if($yr_diff >= 0){ $trezvz = "<b>".$base_prefix.":</b><br>"; if($yr_diff>0){$trezvz .= $yr_diff." ".$years;} if($yr_diff>0 and $mon_diff>0){$trezvz .= ", ";} if($mon_diff>0){$trezvz .= $mon_diff." ".$month;} if($day_diff>0 and $mon_diff>0){$trezvz .= ", ";} if($day_diff>0 and $mon_diff==0 and $yr_diff>0){$trezvz .= ", ";} if($day_diff>0){$trezvz .= $day_diff." ".$days;} } } } Тот же принцип формирования строки можно и на джавскрипте сделать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Cross- Опубликовано 11 Ноября 2007 Автор Жалоба Поделиться Опубликовано 11 Ноября 2007 Ну а конкретно с моим JS можно сделать что нить? Если ты не проверил, то после правки он показывает то что ты хотел т.е. то что ты описал в первом посте этой темы.Четыре месяца и пятый месяц - разницу видите? Ты дату рождения форума не знаешь чтоли? smile.gifЕсли я незнаю, то кто тогда её устанавливал? Конечно спасибо Вам за отзывчивость, но это не то что мне надо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vasyast Опубликовано 11 Ноября 2007 Жалоба Поделиться Опубликовано 11 Ноября 2007 Вряд ли можно сократить. Вообще, такая форма записи JS крайне нечитабильна. По-моему легче будет реализовать такое на PHP. Кстати сказать, где-то год назад я такую штуку писал. Вот можете посмотреть мою запись на эту тему: http://www.ibresource.ru/forums/blog/vasya...hp?showentry=87 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-Cross- Опубликовано 12 Ноября 2007 Автор Жалоба Поделиться Опубликовано 12 Ноября 2007 vasyastСпасибоА в скин ипб он встроиться без проблем?Что буде писаться. Если будет ровное кол во лет? Просто кол-во лет ( к примеру Проект в сети: 2 года) ? Что будет если форуму ровно (к примеру) 3 месяца? Бдуте просто написано форуму 3 месяца?...Растолкуйте пожалуйста, если Вам несложно... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
vasyast Опубликовано 12 Ноября 2007 Жалоба Поделиться Опубликовано 12 Ноября 2007 -Cross-, я модифицировал скриптец n-летней давности http://www.ibresource.ru/forums/blog/vasya...y=87#comment238Сделайте php страничку с ним и потестите вывод с разными датами. В шаблоны форума PHP вставлять нельзя. Поищите в поиске на форуме принцип вставки PHP кода в форум... Это не сложно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.