sitten/jäljellä

raspi 26.08.01 14:20

laske sitten/jäljellä oleva aika jostakin

 Tekstiversio  Arvo: 0 (2 ääntä)  Äänestä: +  -
(fixed)
<?php
function aeka ($sekunnit) {
    $vuodet = floor($sekunnit / 31536000); $sekunnit = $sekunnit % 31536000;
    $paivat = floor($sekunnit / 86400); $sekunnit = $sekunnit % 86400;
    $tunnit = floor($sekunnit / 3600); $sekunnit = $sekunnit % 3600;
    $minuutit = floor($sekunnit / 60); $sekunnit = $sekunnit % 60;
   
    $vuositeksti = ($vuodet != 0 ? ($vuodet == 1 ? "$vuodet vuosi, " : "$vuodet vuotta, ") : "");
    $paivateksti = ($paivat != 0 ? ($paivat == 1 ? "$paivat päivä, " : "$paivat päivää, ") : "");
    $tuntiteksti = ($tunnit != 0 ? ($tunnit == 1 ? "$tunnit tunti, " : "$tunnit tuntia, ") : "");
    $minuuttiteksti = ($minuutit != 0 ? ($minuutit == 1 ? "$minuutit minuutti, " : "$minuutit minuuttia, ") : "");
    $sekteksti = ($sekunnit != 0 ? ($sekunnit == 1 ? "$sekunnit sekunti" : "$sekunnit sekuntia") : "");

    return "$vuositeksti$paivateksti$tuntiteksti$minuuttiteksti$sekteksti";
}

$synttari = "11.09.2001 00:00"; // pp.kk.vvvv hh:mm
// HUOM:
// 1.1.1970 aiemmat päivämäärät eivät kelpaa
// >> http://fi.php.net/manual/en/function.time.php
$synttari = ereg_replace('([0-9]*)\.([0-9]*)\.([0-9]*)','\2/\1/\3', $synttari);
$synttari = strtotime($synttari);

$nyt = time();

if ($synttari > $nyt) {
  $joo = $synttari - $nyt;
  echo aeka($joo) . " jäljellä";
}

if ($nyt > $synttari) {
  $joo = $nyt - $synttari;
  echo aeka($joo) . " sitten";
}
?>

tämän voi varmaan tehdä myös toisin?

amp_god 15:36 6.9.02 
Tämä scripti ei ainakaan minulla toimi (mbnet:in palvelimella) :( tulostaa aivan järjettömiä vaikka laittaa minkä tahansa päivän :P esim : pvä=22.07.1938 06:00
Tulostuu "iäksi" : 32 vuotta, 256 päivää, 12 tuntia, 21 minuuttia, 52 sekuntia sitten
----
Eikö jossakin kohtaa oo scriptissä bugia tms...
myös toi "vakio" päivämäärä antaa saman tuloksen
((http://koti.mbnet.fi/hjylha/?page=contact))
raspi 07:42 8.9.02 
korjattu
pikkumyy 16:21 27.9.02 
Ilmeisesti et ota karkausvuosia yms huomioon ollenkaan? Parempi olisi ollut käyttää mktime():a sekuntien selvittämiseen.