Avatar billede topsite Nybegynder
19. august 2005 - 23:41 Der er 14 kommentarer og
2 løsninger

Udregne dage til fødselsdag

Jeg har følgende data:

$Data[BirthDay]    - ex. 24
$Data[BirthMonth]  - ex. 12
$Data[BirthYear]    - ex. 1982

Hvordan kan jeg udregne antal dage til hans fødselsdag?

Jeg går ud fra man skal ind og kigge på om måneden 12 > date("m") - og ud fra det lave en tæller som tæller ned fra i dette tilfælge 24-12-2005

Nogle der har noget liggende i arkiverne?
Avatar billede topsite Nybegynder
19. august 2005 - 23:49 #1
Helt specifikt leder jeg efter noget alá denne her:
http://www.paulsadowski.com/birthday.asp
Avatar billede Slettet bruger
20. august 2005 - 10:16 #2
<?php
$dato = mktime(0, 0, 0, 8, 24, 2005); // 0, 0, 0, måned, dag, år
$udregn = ($dato - time()) / 86400;
echo floor($udregn);
?>
Avatar billede nielle Nybegynder
20. august 2005 - 10:29 #3
<?php
$dato = mktime(0, 0, 0, 8, 24, 2005); // 0, 0, 0, måned, dag, år
$udregn = ($dato - time()) / 60*60*24;  // Sekunder pr. dag.
$days = ceil($udregn);  // Halve dage skal rundes op - ikke ned.

if ($days < 0)
{
    $dato = mktime(0, 0, 0, 8, 24, 2006);
    $udregn = ($dato - time()) / 60*60*24;
    $days = ceil($udregn);  // Halve dage skal tælles op - ikke ned.
}

echo $days;
?>
Avatar billede nielle Nybegynder
20. august 2005 - 10:30 #4
If-sætningen bør vist rettes til:

if ($days < 1)
Avatar billede nielle Nybegynder
20. august 2005 - 10:36 #5
Glem det sidste ...
Avatar billede topsite Nybegynder
20. august 2005 - 11:20 #6
nielle > ifølge din beregning er der 764179200 dage til jeg har fødselsdag, min hovedregning siger at der er LIDT mindre ;)

$dato = mktime(0, 0, 0, $Data[BirthMonth], $Data[BirthDay], $Data[BirthYear]); // 0, 0, 0, 11, 17, 1984 <- sådan ser indholder af mine variabler ud
$udregn = ($dato - time()) / 60*60*24;  // Sekunder pr. dag.
$days = ceil($udregn);  // Halve dage skal rundes op - ikke ned.

if ($days < 0)
{
    $dato = mktime(0, 0, 0, 8, 24, 2006);
    $udregn = ($dato - time()) / 60*60*24;
    $days = ceil($udregn);  // Halve dage skal tælles op - ikke ned.
}
Avatar billede topsite Nybegynder
20. august 2005 - 11:22 #7
gandso > din løsning giver mig: -7582 dage :)
Avatar billede topsite Nybegynder
20. august 2005 - 11:22 #8
Har i taget højde for fødselsåret?
$dato = mktime(0, 0, 0, $Data[BirthMonth], $Data[BirthDay], $Data[BirthYear]);
// 0, 0, 0, 11, 17, 1984 <- sådan ser indholder af mine variabler ud
Avatar billede topsite Nybegynder
20. august 2005 - 11:27 #9
okay, jeg kom lidt videre.. men stadig ikke den rigtige dato
---
$iaar = date("Y");
$neasteaar = iaar++;

$dato = mktime(0, 0, 0, 11, 17,$iaar); // 0, 0, 0, 11, 17, 1984 <- sådan ser indholder af mine variabler ud
$udregn = ($dato - time()) / 60*60*24;  // Sekunder pr. dag.
$days = ceil($udregn);  // Halve dage skal rundes op - ikke ned.

if ($days < 0)
{
    $dato = mktime(0, 0, 0, 11, 17, $neasteaar);
    $udregn = ($dato - time()) / 60*60*24;
    $days = ceil($udregn);  // Halve dage skal tælles op - ikke ned.
   
}

echo $days;
Avatar billede topsite Nybegynder
20. august 2005 - 11:29 #10
Mmm underligt, det her regnestykke giver mig: 7301616

$dato = mktime(0, 0, 0, 8, 24, 2005); // 0, 0, 0, måned, dag, år
$udregn = ($dato - time()) / 60*60*24;  // Sekunder pr. dag.
$days = ceil($udregn);  // Halve dage skal rundes op - ikke ned.
Avatar billede nielle Nybegynder
20. august 2005 - 11:32 #11
Fødselsåret har da ingen relevans for hvornår personen har fødselsdag næste gang?
Avatar billede topsite Nybegynder
20. august 2005 - 11:39 #12
Liks miks maks og det kom til at virke, TAK FOR HJÆLPEN - læg venligst et svar!

$dateThisYear = date("Y");
$dateNextYear = $dateThisYear+1;
$dato = mktime(0, 0, 0, $Data[BirthMonth], $Data[BirthDay], $dateThisYear); // 0, 0, 0, måned, dag, år
$datow = time();
$udregn = ($dato - $datow) / 86400;  // Sekunder pr. dag.
$days = ceil($udregn);  // Halve dage skal rundes op - ikke ned.

if ($days < 0)
{
    $dato = mktime(0, 0, 0, $Data[BirthMonth], $Data[BirthDay], $dateNextYear); // 0, 0, 0, måned, dag, år
    $udregn = ($dato - $datow) / 86400; // Sekunder pr. dag.
    $days = ceil($udregn);  // Halve dage skal tælles op - ikke ned.
}
Avatar billede nielle Nybegynder
20. august 2005 - 11:50 #13
Doh, jeg ved hvorfor at tallene blev ret vilde:

$udregn = ($dato - time()) / 60*60*24;

- bliver jo beregnet som:

$udregn = (($dato - time()) / 60) *60*24;

En parentes skulle løse problemet:

$udregn = ($dato - time()) / (60*60*24);
Avatar billede nielle Nybegynder
20. august 2005 - 11:50 #14
Skal gandso og jeg ikke bare dele points på denne her?

... mit svar :^)
Avatar billede Slettet bruger
20. august 2005 - 15:08 #15
her har i mit svar, hvis det skal bruges til noget ;)
- nielle må godt få pointene.
Avatar billede topsite Nybegynder
21. august 2005 - 13:03 #16
Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester