eigene date-Funktion

Zimtgruen

Erfahrenes Mitglied
guten abend,

habe ein kleines Problem.
Ich würd gern eine Funktion erstellen, mit der ein alter errechnet wird, was aber nicht unserem zeitformat folgt, sondern einem in dieser Funktion festgelegten Anzahl an Jahren umgewandelt werden soll, und zwar soll ein Jahr 30 Tagen entsprechen und soll dann etwa so aufgerufen werden:
PHP:
echo newdate ("Y", "$time");
den Timestamp bekomme ich aus einer Datenbank.

kann mir jemand sagen, wie ich das am besten mache?

vielen dank schonmal
Zimtgruen
 
also wenn jetzts beispielsweise das ursprüngliche datum am 16.09.2008 war, der timestamp also 1221550782, dann soll jetzt angezeigt werden 2 Jahre
 
Also zum Beispiel so etwas:
PHP:
<?php
function newdate($format, $stamp) {
	$factor = 60 * 60 * 24 * 30; // Wenn man $stamp durch diesen Faktor dividiert, erhält man die Anzahl der Jahre
	$jahr = floor($stamp / $factor); // mit floor wird der kleinere Integer-Wert erzeugt
	$rest = $stamp - $jahr * $factor;
	$tag = floor($rest / 60 / 60 / 24); // die restlichen Tage

	if ($format=='Y') {
		return $jahr;
	} elseif ($format=='d') {
		return $tag;
	} else {
		return false;
	}
}

echo newdate('Y', time()).' Jahre und '.newdate('d', time()).' Tage seit Beginn der Zeitrechnung<br />';
?>
 
klingt logisch,
allerdings wird mir Parse error: parse error, unexpected T_VARIABLE in /var/www/web87/html/MV/Pferde/alterung.php on line 20 für folgende zeile angezeigt:
PHP:
function newdate($format, $stamp) {
 
In Zeile 20? Dann hast du also noch etwas davor stehen. Da muss der Fehler sein. Ich habe das Script getestet: es läuft ohne Probleme.

Übrigens: meine Zeitrechnung beginnt mit der Zeitrechnung für den Timestamp. Ist, so glaube ich, etwas mit 1971 oder so. Wenn du das z.B. mit dem Jahr 2000 starten willst, musst du den Timestamp dafür abziehen.
 
ne die daten beschränken sich nicht nur auf die zeit nach 2000, außerdem ist das ja egal eigtl, weil ja die zeit eine rolle spielt, die zwischen dem timestamp und jetzt ist

hm hab davor eigtl nur

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Untitled</title>
</head>

<link rel="stylesheet" type="text/css" href="http://web87.bces-2030.de/MV/style.css">
<body>
<CENTER>
<FONT face=Verdana>



<?php

$stamp = "1221550782";
 
Also, ich verstehe nicht, warum ein Fehler bei dir auftritt. Hier mein getestetes Script:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Untitled</title>
</head>

<link rel="stylesheet" type="text/css" href="http://web87.bces-2030.de/MV/style.css">
<body>
<CENTER>
<FONT face=Verdana>

<?php
$stamp = 1221550782;

function newdate($format, $stamp) {
	$factor = 60 * 60 * 24 * 30; // Wenn man $stamp durch diesen Faktor dividiert, erhält man die Anzahl der Jahre
	$jahr = floor($stamp / $factor); // mit floor wird der kleinere Integer-Wert erzeugt
	$rest = $stamp - $jahr * $factor;
	$tag = floor($rest / 60 / 60 / 24); // die restlichen Tage

	if ($format=='Y') {
		return $jahr;
	} elseif ($format=='d') {
		return $tag;
	} else {
		return false;
	}
}

echo newdate('Y', time()-$stamp).' Jahre und '.newdate('d', time()-$stamp).' Tage zwischen $stamp und heute.<br />';
?>
</FONT>
</CENTER>
</body>
</html>
 
Also, ich verstehe nicht, warum ein Fehler bei dir auftritt. Hier mein getestetes Script:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Untitled</title>
</head>

<link rel="stylesheet" type="text/css" href="http://web87.bces-2030.de/MV/style.css">
<body>
<CENTER>
<FONT face=Verdana>

<?php
$stamp = 1221550782;

function newdate($format, $stamp) {
	$factor = 60 * 60 * 24 * 30; // Wenn man $stamp durch diesen Faktor dividiert, erhält man die Anzahl der Jahre
	$jahr = floor($stamp / $factor); // mit floor wird der kleinere Integer-Wert erzeugt
	$rest = $stamp - $jahr * $factor;
	$tag = floor($rest / 60 / 60 / 24); // die restlichen Tage

	if ($format=='Y') {
		return $jahr;
	} elseif ($format=='d') {
		return $tag;
	} else {
		return false;
	}
}

echo newdate('Y', time()-$stamp).' Jahre und '.newdate('d', time()-$stamp).' Tage zwischen $stamp und heute.<br />';
?>
</FONT>
</CENTER>
</body>
</html>
 
Zurück