Tijd geleden script werkt niet zoals ik had gehoopt.

Status
Niet open voor verdere reacties.

Remi1995

Gebruiker
Lid geworden
31 jul 2009
Berichten
291
Hallo.


Met wat tutorials en een beetje PHP kennis heb ik een script in mekaar gezet die laat zien wanneer het nieuws item op mijn (toekomstige) site is gemaakt.

Echter krijg ik het volgende te zien '01-mei-2011 08:52 -1987 seconden geleden'.


Dit is het script;
PHP:
setlocale(LC_ALL, 'nld_nld');
function convertdate($sqltime,$br){
	$sqltime = strtotime($sqltime);
	
	$time = time();
	$diff = $time - $sqltime;
	
	if($diff < 60){
		$count = $diff;
		if($count == 0){
			$suffix = "Een moment geleden";
		}elseif($count == 1){
			$suffix = "Eén seconde geleden";
		}else{
			$suffix = $count . " secondes geleden";
		}
	}elseif($diff > 60 && $diff < 3600){
		$count = floor($diff/60);
		if($count == 1){
			$suffix = "Een minuut geleden";
		}else{
			$suffix = $count . " minuten geleden";
		}
	}elseif($diff > 3600 && $diff < 86400){
		$count = floor($diff/3600);
		if($count == 1){
			$suffix = "Een uur geleden";
		}else{
			$suffix = $count . " uren geleden";
		}
	}elseif($diff > 86400 && $diff < 2629743){
		$count = floor($diff/86400);
		if($count == 1){
			$suffix = "Een dag geleden";
		}else{
			$suffix = $count . " dagen geleden";
		}
	}elseif($diff > 2629743 && $diff < 31556926){
		$count = floor($diff/2629743);
		if($count == 1){
			$suffix = "Een maand geleden";
		}else{
			$suffix = $count . " maanden geleden";
		}
	}elseif($diff > 31556926){
		$count = floor($diff/31556926);
		if($count == 1){
			$suffix = "Een jaar geleden";
		}else{
			$suffix = $count . " jaren geleden";
		}
	}
	
	$datumtijd = strftime('%d-%B-%Y  %H:%M', $sqltime);
	
	if($br==0){
		return $datumtijd . ", " . $suffix;
	}elseif($br==1){
		return $datumtijd . "<br/>" . $suffix;
	}else{
		return $suffix;
	}
}

// En op deze manier roep je hem dan op;
echo convertdate($topicinfo['datumtijd'],1);
(Ik gebruik Wamp, misschien staat de tijd daar niet goed ingestelt?)

Kan iemand mij misschien uitleggen waarom het niet werkt?


Groetjes, Remi1995
 
Laatst bewerkt door een moderator:
ik dacht dat op regel 7 je eens print"$time => $sqltime ";

en mogelijks moet je een timestamp nog maken van je $sqltime
 
Print de waardes van $time en $sqltime eens op het scherm.
 
Je moet maar eens kijken ik heb je script aangepast

Mijn vraag is nu of deze onder gnu open licentie mag komen?
PHP:
$test = new timetostring();
$temp = 1304277549 ; //$topicinfo['datumtijd'];
print $test->convertdate($temp,1);
class timetostring{
    function convertdate($sqltime,$br){
        $temp = $sqltime;
        //$sqltime = strtotime($sqltime);//use the date.timezone setting or the date_default_timezone_set() function
        $datumtijd = "";//strftime('%d-%B-%Y  %H:%M', $sqltime);//It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
        $suffix= $this->getmytime($sqltime);
        if($br==0){
            return $datumtijd . ", " . $suffix;
        }elseif($br==1){
            return $datumtijd . "<br/>" . $suffix;
        }else{
            return $suffix;
        }
    }
    function getmytime($stamp){
            $time = time();
            $diff = $time - $stamp;
            print $diff ."=". $time ."-".$stamp."<br>";
            if($this->isjaar($diff)){
                $count = floor($diff/31556926);
                return ($count == 1)? "Een jaar geleden": $count." jaren geleden";
            }
            if($this->ismaand($diff)){
                $count = floor($diff/2629743);
                return ($count == 1)? "Een maand geleden": $count." maanden geleden";
            }
            if($this->isdag($diff)){
                $count = floor($diff/86400);
                return ($count == 1)? "Een dag geleden": $count." dagen geleden";
            }
            if($this->isuur($diff)){
                $count = floor($diff/3600);
                return ($count == 1)? "Een uur geleden": $count." uren geleden";
            }
            if($this->isminuut($diff)){
                $count = floor($diff/60);
                return ($count == 1)? "Een minuut geleden": $count." minuten geleden";
            }
            if($this->isseconde($diff)){
                $count = $diff;
                if($count == 0){
                    return  "Een moment geleden";
                }else{
                    return ($count == 1)? "Eén seconde geleden": $count." secondes geleden";
                }
            } 
    }
    function isjaar($stamp){
        return $stamp > 31556926;
    }
    function ismaand($stamp){
        return $stamp > 2629743 && $stamp < 31556926;
    }
    function isdag($stamp){
        return $stamp > 86400 && $stamp < 2629743;
    }
    function isuur($stamp){
        return $stamp > 3600 && $stamp < 86400;
    }
    function isminuut($stamp){
        return $stamp > 60 && $stamp < 3600;
    }
    function isseconde($stamp){
        return $stamp < 60;
    }
}
?>
 
Je moet maar eens kijken ik heb je script aangepast

Mijn vraag is nu of deze onder gnu open licentie mag komen?
PHP:
$test = new timetostring();
$temp = 1304277549 ; //$topicinfo['datumtijd'];
print $test->convertdate($temp,1);
class timetostring{
    function convertdate($sqltime,$br){
        $temp = $sqltime;
        //$sqltime = strtotime($sqltime);//use the date.timezone setting or the date_default_timezone_set() function
        $datumtijd = "";//strftime('%d-%B-%Y  %H:%M', $sqltime);//It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function.
        $suffix= $this->getmytime($sqltime);
        if($br==0){
            return $datumtijd . ", " . $suffix;
        }elseif($br==1){
            return $datumtijd . "<br/>" . $suffix;
        }else{
            return $suffix;
        }
    }
    function getmytime($stamp){
            $time = time();
            $diff = $time - $stamp;
            print $diff ."=". $time ."-".$stamp."<br>";
            if($this->isjaar($diff)){
                $count = floor($diff/31556926);
                return ($count == 1)? "Een jaar geleden": $count." jaren geleden";
            }
            if($this->ismaand($diff)){
                $count = floor($diff/2629743);
                return ($count == 1)? "Een maand geleden": $count." maanden geleden";
            }
            if($this->isdag($diff)){
                $count = floor($diff/86400);
                return ($count == 1)? "Een dag geleden": $count." dagen geleden";
            }
            if($this->isuur($diff)){
                $count = floor($diff/3600);
                return ($count == 1)? "Een uur geleden": $count." uren geleden";
            }
            if($this->isminuut($diff)){
                $count = floor($diff/60);
                return ($count == 1)? "Een minuut geleden": $count." minuten geleden";
            }
            if($this->isseconde($diff)){
                $count = $diff;
                if($count == 0){
                    return  "Een moment geleden";
                }else{
                    return ($count == 1)? "Eén seconde geleden": $count." secondes geleden";
                }
            } 
    }
    function isjaar($stamp){
        return $stamp > 31556926;
    }
    function ismaand($stamp){
        return $stamp > 2629743 && $stamp < 31556926;
    }
    function isdag($stamp){
        return $stamp > 86400 && $stamp < 2629743;
    }
    function isuur($stamp){
        return $stamp > 3600 && $stamp < 86400;
    }
    function isminuut($stamp){
        return $stamp > 60 && $stamp < 3600;
    }
    function isseconde($stamp){
        return $stamp < 60;
    }
}
?>
Sorry, ik snap niet wat je bedoelt met Open licencie.

Ik ga de nieuwe code proberen, bedankt voor je hulp.

Edit;
Ik krijg hem alsnog niet goed aan de praat, kan het misschien zijn dat het probleem in Wamp zit? Het script dat helemaal boven staat heeft wel gewerkt.

In ieder geval, bedankt voor jullie hulp.


Groetjes, Remi1995
 
Laatst bewerkt door een moderator:
zie commentaar er staat een warning die het niet toelaat de systeemtijd op te vragen waarom ?? het is wel een offline probleem denk ik

Het gaat om de letterlijke warning van mijn xampp

Open lecentie is open source dus mag voor iedereen gebruikt worden
 
Laatst bewerkt:
zie commentaar er staat een warning die het niet toelaat de systeemtijd op te vragen waarom ?? het is wel een offline probleem denk ik

Het gaat om de letterlijke warning van mijn xampp

Open lecentie is open source dus mag voor iedereen gebruikt worden

Dat script dat ik voor een deel heb gemaakt mag iedereen wel gebruiken.

Misschien kan ik ook niet de goede tijd opvragen in Wamp, dat dat het probleem is.




Groetjes, Remi1995.
 
Ik heb een (tijdelijke) oplossing gevonden;

Dit bovenaan de If statement zetten;
PHP:
$diff = $diff + 7200;

Ik snap nog niet waarom er 7200 vanaf word gehaald maar ik ben in ieder geval al blij dat het nu toch werkt.


Bedankt voor iedereen zijn hulp.



Groetjes, Remi1995.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan