Onko kellään semmosta ikälaskuria, eli siinä se laskis sun iän esim. näin: 18 vuotta, 4 kuukautta 28 päivää, tolleen oli yhdellä sivulla mutta kun kysäisin ylläpidolta niin hän sanoin ettei vaivaudu etsimään sitä skriptiä niin ajattelin kysäistä täältä. Mielummin haluaisin itse koodin, mutta jos on oppaita niin miks ei
Lue vaikka nuo php-oppaat joita täältä löytyy.
Iän voi laskea samalla tavalla, kuin sen tekisi käsinkin. Eli ensin lasketaan vuodet, sitten kuukaudet ja lopuksi päivät. Jos loppukuukausi on alkukuukautta pienempi, vuosia onkin yksi vähemmän. Ja jos loppukuukaudenpäivä on alkukuukaudenpäivää pienempi, kuukausien määrä on yhden pienempi. Skriptin tekoa vaikeuttavat jonkun verran kuukausien muuttuva päivienmäärä sekä karkausvuodet.
Tekaisin nopeasti tämmöisen esimerkin, joka tuntui toimivan ainakin kokeilemillani päivillä.
<?php // 4.11.1990 $alku = mktime(0, 0, 0, 11, 4, 1990); // tämänhetkinen aika $loppu = time(); $vuodet = date("Y", $loppu) - date("Y", $alku); if (date("m", $loppu) < date("m", $alku)) { $vuodet--; $kuukaudet = 12 - (date("m", $alku) - date("m", $loppu)); } else { $kuukaudet = date("m", $loppu) - date("m", $alku); } if (date("d", $loppu) < date("d", $alku)) { $kuukaudet--; if ($kuukaudet == 4 || $kuukaudet == 6 || $kuukaudet == 9 || $kuukaudet == 11) { $päivät = 30 - (date("d", $alku) - date("d", $loppu)); } elseif ($kuukaudet == 2) { if ($vuodet % 4 == 0 && ($vuodet % 100 != 0 || $vuodet % 400 == 0)) { $päivät = 29 - (date("d", $alku) - date("d", $loppu)); } else { $päivät = 28 - (date("d", $alku) - date("d", $loppu)); } } else { $päivät = 31 - (date("d", $alku) - date("d", $loppu)); } } else { $päivät = date("d", $loppu) - date("d", $alku); } echo "$vuodet vuotta, $kuukaudet kuukautta, $päivät päivää"; ?>
Kiitos Antti toi toimii :)
Mutta tota vaihtuuko toi kun vaikka mulle tulee nyt näin:
13 vuotta, 6 kuukautta, 4 päivää
niin vaihtuuko toi huomenna automaattisesti tällaseks:
13 vuotta, 6 kuukautta, 5 päivää ??
eiköhän se vaihdu. Voit testata vaikka asettelemalla windowsin kelloa...
Vaihtuuhan se, koska lopetusaika tulee suoraan time-funktiosta. :)
Noinhan tuo käy kätevästi, mutta koodia voi lyhentää huomattavastikin käyttämällä enemmän hyväksi date-funktion tarjoamia palveluita... esim. t-parametrilla saadaan kuukauden päivien lukumäärä selville ja L-parametrin avulla taasen saadaan selville, onko kyseessä karkausvuosi vai ei.
Hyvä huomautus, date-funktio on monipuolisempi kuin muistin. Tosin tuon koodin pystyy helpommin kääntämään myös muille kielille, joissa ei vastaavia ylellisyyksiä ole.
Aihe on jo aika vanha, joten et voi enää vastata siihen.