/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 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()?

--
Lars Olesen
Konkurrence på <http://www.fodboldenslegestue.dk>
Kan det gøres bedre? Navigation og brugervenlighed!

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);
?>

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste