|
| Alder ved hjælp af timestamp af fødelsdag Fra : Kasper Johansen |
Dato : 14-03-04 13:41 |
|
Hej gruppe...
Jeg har en ret god idet til hvordan det gøres, men den ide kræver en del
kode og sådan. Jeg er sikker på at der er en nemmere måde og spørger derfor
om der ikke er en smart funktion i php der kan gøre det kort og præcist?
Jeg har et timestamp i php af en persons fødselsdag (altså dagen han blev
født), og vil gerne vide hvor gammel han er nu?
Min ide til at gøre det ville være noget lign. ved at først trække årene fra
hinanden og derfor tjekke om vi var over måneden (og datoen) hvor
fødelsdagen er for at finde ud af om han har haft fødselsdag. Men er der
ikke en lettere måde?
Mvh
Kasper
| |
Dan Molberg (14-03-2004)
| Kommentar Fra : Dan Molberg |
Dato : 14-03-04 14:10 |
|
In news:405452df$0$27360$edfadb0f@dread16.news.tele.dk,
Kasper Johansen <kasper@johansen.tdcadsl.dk> typed:
> Hej gruppe...
>
> Jeg har en ret god idet til hvordan det gøres, men den ide kræver en
> del kode og sådan. Jeg er sikker på at der er en nemmere måde og
> spørger derfor om der ikke er en smart funktion i php der kan gøre
> det kort og præcist?
>
> Jeg har et timestamp i php af en persons fødselsdag (altså dagen han
> blev født), og vil gerne vide hvor gammel han er nu?
>
>
> Min ide til at gøre det ville være noget lign. ved at først trække
> årene fra hinanden og derfor tjekke om vi var over måneden (og
> datoen) hvor fødelsdagen er for at finde ud af om han har haft
> fødselsdag. Men er der ikke en lettere måde?
Nope.....
function howOld($day, $month, $year) {
$DOB[] = explode("-", $DOB);
$TodayDay = date('d');
$TodayMonth = date('m');
$TodayYear = date('Y');
if (($TodayMonth > $month) || (($TodayMonth == $DOB) && ($TodayDay >=
$day))) $Age = $TodayYear - $year;
else $Age = $TodayYear - $year - 1;
return $Age;
}
--
MVH Dan Molberg
http://beyond.repair.dk/
| |
Per Thomsen (14-03-2004)
| Kommentar Fra : Per Thomsen |
Dato : 14-03-04 22:44 |
|
Kasper Johansen wrote:
> Hej gruppe...
[klip]
> om der ikke er en smart funktion i php der kan gøre det kort og præcist?
>
> Jeg har et timestamp i php af en persons fødselsdag (altså dagen han blev
> født), og vil gerne vide hvor gammel han er nu?
[klip]
Her er hvordan jeg gør det:
function age($birthdayTimestamp) {
$birthDay = (double) date("Y.md", $birthdayTimestamp );
$today = (double) date("Y.md");
return ceil( $today - $birthDay );
}
Jeg laver "ceil" fordi, folk som regel siger, hvor mange antal hele år
de er. Du kan se det i aktion på:
< http://www.pert.dk/index.php?page=profile.php&title=Profile>
MVH Per Thomsen,
http://www.pert.dk/
| |
Lars Olesen (14-03-2004)
| Kommentar Fra : Lars Olesen |
Dato : 14-03-04 23:25 |
| | |
Per Thomsen (14-03-2004)
| Kommentar Fra : Per Thomsen |
Dato : 14-03-04 23:49 |
|
Lars Olesen wrote:
> Per Thomsen wrote:
>
>> Jeg laver "ceil" fordi, folk som regel siger, hvor mange antal hele år
>> de er. Du kan se det i aktion på:
>> < http://www.pert.dk/index.php?page=profile.php&title=Profile>
>
>
> Burde du ikke anvende floor()?
>
heh... jo, selvfølgelig.
Jeg led (og lider stadig nogle gange) af den syge ide, at jeg faktisk er
et år ældre end jeg er, men det er jeg jo ikke ;).
Da jeg oprindelige skrev funktionen ovenfor, brugte den floor, men jeg
mente at den regnede forkert. Jeg kan tydeligt huske, nu når du nævner
det, at jeg undrede mig gevaldigt over, hvorfor den regnede rigtigt med
ceil og ikke med floor (det har sikkert[1] været sent). Jeg accepterede
imidlertid at ceil, gav det (efter min overbevisning) rigtige resultat.
Det kan lære mig at stole mere på min computer, end på min latterlige
hjerne :)
[1] forhåbentligt? :)
MVH Per Thomsen,
http://www.pert.dk/
| |
Peter Brodersen (15-03-2004)
| Kommentar Fra : Peter Brodersen |
Dato : 15-03-04 00:04 |
|
On Sun, 14 Mar 2004 13:41:02 +0100, "Kasper Johansen"
<kasper@johansen.tdcadsl.dk> wrote:
>Jeg har et timestamp i php af en persons fødselsdag (altså dagen han blev
>født), og vil gerne vide hvor gammel han er nu?
Well, timestamps kan give problemer i forhold til datoer før 1/1 1970.
Hvis datoen derimod er i "YYYY-MM-DD"-format (fx "1960-04-20" for en
person født 20. april 1960), så kan følgende sikkert bruges:
<?php
function calculateAge($birth, $now = FALSE) {
if ($now === FALSE) {
$now = date("Y-m-d");
}
list($b_year,$b_month,$b_day) = explode("-",$birth);
list($n_year,$n_month,$n_day) = explode("-",$now);
$newage = ($n_year - $b_year);
// Hvis personen ikke har haft fødselsdag endnu i år, så træk én fra
if ("$b_month-$b_day" > "$n_month-$n_day") {
$newage--;
}
return $newage;
}
?>
Fx:
print calculateAge("2002-06-15");
(nogle folk vil måske brokke sig over den måde, jeg sammenligner
strings på, men jeg forudsætter at datoen er skrevet i det nævnte
format)
--
- Peter Brodersen
Ugens sprogtip: hoved (og ikke hovede)
| |
Brian Schmidt (22-03-2004)
| Kommentar Fra : Brian Schmidt |
Dato : 22-03-04 04:44 |
|
Kasper Johansen wrote:
> Jeg har et timestamp i php af en persons fødselsdag (altså dagen han blev
> født), og vil gerne vide hvor gammel han er nu?
Her er en lille simpel funktion jeg selv bruger.
<?php
function calc_age($str_birthday)
{
if (!$str_birthday) {
return FALSE;
}
$int_age =
floor((time()-strtotime($str_birthday))/(60*60*24*365.22222222222));
return $int_age;
}
$age = calc_age(31.12.2000);
?>
| |
|
|