anpera.net
http://anpera.homeip.net/phpbb3/

php 5.1.1 und Version: 0.9.7+jt ext (GER)
http://anpera.homeip.net/phpbb3/viewtopic.php?f=25&t=1974
Seite 2 von 2

Autor:  anpera [ Di 06 Dez, 2005 19:54 ]
Betreff des Beitrags: 

Klickerklick

Ich hoffe, das sind alle Dateien. Wenn dir noch irgendwas auffällt, das mit PHP 5.1.x nich geht, meld dich einfach. Ich kann PHP 5.1 hier erst aufspielen, wenn eAccelerator das unterstützt.

Autor:  Zarzal [ Di 06 Dez, 2005 20:12 ]
Betreff des Beitrags: 

schon eingebaut und es scheint alles zu laufen. Riesen Dank an dich für die Unterstützung. Gute Arbeit - das hätt ich nie hinbekommen. :wink:

Autor:  Saaxa [ Sa 03 Dez, 2011 14:25 ]
Betreff des Beitrags:  Re: php 5.1.1 und Version: 0.9.7+jt ext (GER)

hi, wollte ne zeitberechnung zwischen spiel und altuellem datum...
daten werden richtig ausgegeben, aber berechnung stimmt irgendwie nicht?

seht ihr den fehler? finde es nicht -.-

PHP:
$curdate=getsetting('gamedate','0005-01-01');
$predate=date('Y-m-d');

$spieldatum = explode('-',$curdate);
output("`2`nJahr=".$spieldatum[0].", Mon=".$spieldatum[1].", Tag=".$spieldatum[2]."`n");
// sieht im Browser so aus -> Jahr=1601, Mon=02, Tag=23

$aktuelldatum = explode('-',$predate);
output("`2`nJahr=".$aktuelldatum[0].", Mon=".$aktuelldatum[1].", Tag=".$aktuelldatum[2]."`n");
// sieht im Browser so aus -> Jahr=2011, Mon=12, Tag=03

//serverzeit
$newDate = mktime(0,0,0, $spieldatum[1],$spieldatum[2],$spieldatum[0]);
// aktuelle Zeit im Unixformat erzeugen
$actDate = mktime(0,0,0, $aktuelldatum[1],$aktuelldatum[2],$aktuelldatum[0]);
// Differenz berechnen (in Sekunden)
$diffDate = ($actDate-$newDate);

// Anzahl jahre = Sekunden /52/7/24/60/60
// floor() liefert nur den Anteil vor dem Komma
$years = floor($diffDate / 52 / 7 / 24 / 60 / 60 );
// den verbleibenden Rest berechnen = Wochen
$diffDate = $diffDate - ($years*52*7*24*60*60);

// Anzahl wochen = Sekunden /7/24/60/60
// floor() liefert nur den Anteil vor dem Komma
$weeks = floor($diffDate / 7 / 24 / 60 / 60 );
// den verbleibenden Rest berechnen = Tage
$diffDate = $diffDate - ($weeks*7*24*60*60);

// Anzahl Tage = Sekunden /24/60/60
// floor() liefert nur den Anteil vor dem Komma
$days = floor($diffDate / 24 / 60 / 60 );
// den verbleibenden Rest berechnen = Stunden
$diffDate = $diffDate - ($days*24*60*60);

// den Stundenanteil herausrechnen
$hours = floor($diffDate / 60 / 60);
$diffDate = ($diffDate - ($hours*60*60));

// den Minutenanteil
$minutes = floor($diffDate/60);
$diffDate = $diffDate - ($minutes*60);

// die verbleibenden Sekunden
$seconds = floor($diffDate);

output("`2`n`c`@Das Spiel handelt in der Zeit vor `5$years `@Jahre `5$weeks `@Wochen `5$days `@Tagen `5$hours `@Stunden `@!`c`n");
// sieht im Browser so aus -> Das Spiel handelt in der Zeit vor 42 Jahre 3 Wochen 2 Tagen 3 Stunden !

eigentlich sollten es 410Jahre sein -.-

Autor:  Harthas [ Sa 03 Dez, 2011 15:06 ]
Betreff des Beitrags:  Re: php 5.1.1 und Version: 0.9.7+jt ext (GER)

Wieso machst du nicht einfach
$this->bbcode_second_pass_code('', '$aktuelldatum[0] - $spieldatum[0]')
und lässt Wochen und Stunden weg?


Dein Fehler liegt übrigens vermutlich hier:
php.net hat geschrieben:
Gibt den Unix-Timestamp entsprechend der gegebenen Argumente zurück. Dieser Timestamp ist ein Long Integer, der die Anzahl der Sekunden zwischen der Unix-Epoche (01. Januar 1970 00:00:00 GMT) und dem angegebenen Zeitpunkt enthält.

php.net hat geschrieben:
Die Jahreszahl, die zwei- oder vierstellig angegeben werden kann. Werte von 0 bis 69 werden auf 2000-2069 gemappt, Werte von 70 bis 100 auf 1970-2000. Auf Systemen, auf denen time_t ein 32-Bit Signed Integer ist (das sind die meisten der heutigen Systeme), beginnt der gültige Wertebereich für year bei 1901 und endet bei 2038. Allerdings begrenzen PHP-Versionen vor 5.1.0 den Bereich auf einigen Systemen (z.B. Windows) auf 1970-2038.


P.S. Ausserdem hat ein Jahr auch nicht exakt 52 Wochen ;)

Autor:  Saaxa [ Sa 03 Dez, 2011 15:33 ]
Betreff des Beitrags:  Re: php 5.1.1 und Version: 0.9.7+jt ext (GER)

hmmmm joa hast recht...

hab mir erst mal so selbst geholfen:
PHP:
$curdate=getsetting('gamedate','0005-01-01');
$predate=date('Y-m-d');
output("`2`n".dateDiff("-", $curdate, $predate)."`n");


$spieldatum = explode('-',$curdate);
output("`2`nJahr=".$spieldatum[0].", Mon=".$spieldatum[1].", Tag=".$spieldatum[2]."`n");
$aktuelldatum = explode('-',$predate);
output("`2`nJahr=".$aktuelldatum[0].", Mon=".$aktuelldatum[1].", Tag=".$aktuelldatum[2]."`n");

$days=$aktuelldatum[2]-$spieldatum[2];
$months=$aktuelldatum[1]-$spieldatum[1];
$years=$aktuelldatum[0]-$spieldatum[0];

if ($days<0){
$months--;
$days=30+$days; //30 als Monatsschnitt genommen
}
if ($months<0){
$years--;
$months=12+$months;
}



output("`2`n`c`@Das Spiel handelt in der Zeit vor `5$years `@Jahre `5$months `@Monate `5$days `@Tagen!`c`n");


output-Anzeige:
PHP:
Das Spiel handelt in der Zeit vor 410 Jahre 9 Monate 10 Tagen!


vielleicht nicht schön oder gar perfekt, aber kommt nah an das was ich möchte ;)

Autor:  MySql [ Sa 03 Dez, 2011 16:04 ]
Betreff des Beitrags:  Re: php 5.1.1 und Version: 0.9.7+jt ext (GER)

klick*

Hatte ich mal veröffentlicht. Desweiteren hatte Eliwood im selben Thread noch eine andere Lösung gepostet die weitaus effizienter ist. Vielleicht kommt es an das heran, was Du suchst. :)

Seite 2 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/