Автор Тема: Countup/Считалка  (Прочитано 2843 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Лаура

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Countup/Считалка
« : 21 Января 2005, 23:30:05 »
У меня есть скрип, который подсчитывает года, месяцы, недели и дни после определенной даты (см. ниже). HTML код такой:


PHP скрипт почему-то не считает недели :confused:
Я также не уверенна, что определила правильно месяц :confused:

Пожалуйста, помогите разобраться и исправить код.
Заранее всем благодарна :beer:
# PHP Countup
define("OFFSET", 0);
define("YSECS", 365*24*60*60);
define("MOSECS", 365*2*60*60);
define("WSECS", (365*24*60*60)/7);
define("DSECS", 24*60*60);
define("HSECS", 60*60);
define("MSECS", 60);

function countup($detail, $year, $month = 0, $week = 0, $day = 0, $hour = 0, $minute = 0, $second = 0) {
        $years = $months = $weeks = $days = $hours = $minutes = $seconds = 0;
        $now = mktime() + OFFSET*60*60;
        $before = mktime($hour, $minute, $second, $month, $day, $year);
        $cup = abs($before - $now);

        if ($detail == 1) $years = round($cup/YSECS);
        else $years = floor($cup/YSECS);
        $cup %= YSECS;
        if ($detail == 2) $months = round($cup/MOSECS);
        else $months = floor($cup/MOSECS);
        $cup %= MOSECS;
        if ($detail == 3) $weeks = round($cup/WSECS);
        else $weeks = floor($cup/WSECS);
        $cup %= WSECS;
        if ($detail == 4) $days = round($cup/DSECS);
        else $days = floor($cup/DSECS);
        $cup %= DSECS;
        if ($detail == 5) $hours = round($cup/HSECS);
        else $hours = floor($cup/HSECS);
        $cup %= HSECS;
        if ($detail == 6) $minutes = round($cup/MSECS);
        else $minutes = floor($cup/MSECS);
        $cup %= MSECS;
        $seconds = $cup;

        $tnums = array($years, $months, $weeks, $days, $hours, $minutes, $seconds);
        $ttext = array("year", "month", "week", "day", "hour", "minute", "second");

        $shown = 0;

        for ($i=0;$i<$detail;$i++) {
                if ($tnums[$i]) {
                        echo "$tnums[$i] $ttext[$i]";
                        $shown++;
                        if ($tnums[$i] != 1) echo "s";
                        $count = 0;
                        for ($j=$i+1;$j<$detail;$j++) {
                                if ($tnums[$j]) $count++;
                        }
                        switch($count) {
                                case 0: break 2;
                                case 1: if ($shown>1) echo ","; echo " and "; break;
                                default: echo ", "; break;
                        }
                }
        }
        if ($now < $before) echo " will be";
        if ($now == $before) echo "now";
}
?>

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Countup/Считалка
« Ответ #1 : 22 Января 2005, 01:27:10 »
Почитайте здесь

Оффлайн Лаура

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Countup/Считалка
« Ответ #2 : 22 Января 2005, 05:47:29 »
hanslinger
Cпасибо за ссылку!
Я не очень хорошо разбираюсь в программировании, поэтому самой написать код не получается. Пробую составить его из частей, но чего-то не работает. Могли бы вы помочь мне собрать эти части в полноценный скрипт?

//  -8 hours from GMT: 
$now mktime(date("H")-8date("i"), date("s"), date("m"), date("d"), date("Y")); 
echo 
date("l dS of F Y H:i:s A",$now);


$nodaysinmonth = Array("January" => 31
                        
"February" => 28
                        
"March" => 31
                        
"April" => 30
                        
"May" => 31
                        
"June" => 30
                        
"July" => 31
                        
"August" => 31
                        
"September" => 30
                        
"October" => 31
                        
"November" => 30
                        
"December" => 31);



/*  w e e k n u m b e r  -------------------------------------- // 
weeknumber returns a week number from a given date (>1970, <2030) 
Wed, 2003-01-01 is in week 1 
Mon, 2003-01-06 is in week 2 
Wed, 2003-12-31 is in week 53, next years first week 
Be careful, there are years with 53 weeks. 
// ------------------------------------------------------------ */ 

function weeknumber ($y$m$d) { 
   
$wn strftime("%W",mktime(0,0,0,$m,$d,$y)); 
   
$wn += 0# wn might be a string value 
   
$firstdayofyear getdate(mktime(0,0,0,1,1,$y)); 
   if (
$firstdayofyear["wday"] != 1)    # if 1/1 is not a Monday, add 1 
       
$wn += 1
   return (
$wn); 
}    
# function weeknumber 

/*  d a t e f r o m w e e k  ---------------------------------- // 
From a weeknumber, calculates the corresponding date 
Input: Year, weeknumber and day offset 
Output: Exact date in an associative (named) array 
2003, 12, 0: 2003-03-17 (a Monday) 
1995,  53, 2: 1995-12-xx 
... 
// ------------------------------------------------------------ */ 

function datefromweek ($y$w$o) { 

   
$days = ($w 1) * $o

   
$firstdayofyear getdate(mktime(0,0,0,1,1,$y)); 
   if (
$firstdayofyear["wday"] == 0$firstdayofyear["wday"] += 7
# in getdate, Sunday is 0 instead of 7 
   
$firstmonday getdate(mktime(0,0,0,1,1-$firstdayofyear["wday"]+1,$y)); 
   
$calcdate getdate(mktime(0,0,0,$firstmonday["mon"], $firstmonday["mday"]+$days,$firstmonday["year"])); 

   
$date["year"] = $calcdate["year"]; 
   
$date["month"] = $calcdate["mon"]; 
   
$date["day"] = $calcdate["mday"]; 

   return (
$date); 
echo 
datefromweek
}    
# function datefromweek

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Countup/Считалка
« Ответ #3 : 25 Января 2005, 09:12:31 »
Лаура

Девушка, вам не форум нужен а литература по PHP. На форум люди должны приходить будучи програмистами и обсуждать свои проблемы по конкретной теме а не просить написать весь скрипт целиком.

[OFF]тут нечего собирать, юзать нуна, юзать[/OFF]
[off]Безработный[/off]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28