Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 10:17 Der er 17 kommentarer og
1 løsning

Udregn om det er under dage siden

Hej Alle sammen


Jeg har brug for et script hvor jeg kan angive dage, måneder, og år. Så henter jeg en dato ud fra en database, den dato ligger ud i fremtiden.
Det jeg så skal bruge er en if sætning som er sand hvis dato er tættere på dags dato end f.eks 2 måneder og 14 dage...

Måneder, dag og år skal kunne ændres i en variabel...

Jeg har ingen ide om hvordan jeg skal lave det...


//Kim Laursen
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 10:36 #1
noget i denne stil?

<?php
// dato for sammenligning
$day = "24";
$month = "11";
$year = "2005";
// laver et timestamp
$date = mktime(0, 0, 0, $month, $day, $year);
// 10 uger * 7 dage * 24 timer * 60 minutter * 60 sekunder
$span = (10 * 7 * 24 * 60 * 60); // 10 uger
// henter datoen idag
$now = time();
// finder skæringsdatoen for sammenligning
$checktime = $now+$span;
// ser om $checktime er mindre en den oprettede dato
if ($checktime > $date) {
    echo "der er mindre end 10 uger til datoen";
}
?>
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 10:59 #2
ja lidt måske... Men skal bruge hvor jeg har nogle variabler hvor jeg bare let kan skrive hvor mange md, dage og år der må være til den dato...

f.eks

$dage_til = 14;
$md_til = 2;
aar_tl = 0;
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 11:02 #3
problemet med det er at hvormange dage der er i en måned?

for ellers kan du bare bruge
$antaldage = 70;
$span = ($antaldage * 24 * 60 * 60); // 10 uger
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 11:06 #4
ellers skal du sætte den præcise skæringsdato

<?php
$day = "24";
$month = "11";
$year = "2005";
$date = mktime(0, 0, 0, $month, $day, $year);
$dateday = 28;
$datemonth = 4;
$dateyear = 2005;
$checktime = $mktime(0,0,0 $dateday, $datemonth, $dateyear);
if ($checktime > $date) {
    echo "der er mindre end 10 uger til datoen";
}
?>
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 11:20 #5
Ja men det er fint nok hvis man regner med 30 eller 31, det betyder ikke så meget... Men vil gerne have sådan jeg bare skal skrive hvor mange dag, måneder og år og den max må være væk før den bliver sand... Sådan at den selv renger det ud og sætter det ind...
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 11:39 #6
$dage = 12;
$maaned = 2;
$aar = 1;
$dage = ($dage*24*60*60);
$maaned = ($maaned*31*24*60*60);
$aar = ($aar*365*24*60*60);
$checktime = ($dage+$maaned+$aar);
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 11:40 #7
hov
$checktime = ($dage+$maaned+$aar+$now);
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 11:49 #8
og så stadigvæk, if ($checktime > $date)??

Er det ikke en måde at lave det på med de dage i hver md?
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 11:59 #9
jo det er der vel du kan bruge kalender funktionerne og lave noget ud af det vel
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 12:09 #10
cal_days_in_month() burde kunne bruges til det
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 12:15 #11
kan du ikke bygge det ind i det? Hvis så er der 200 point til dig..
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 12:55 #12
jeg kan lige prøve senere
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 13:36 #13
Lyder klasse...
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 15:31 #14
prøv det her ser ud til at virke

<?php
// dato der skal tjekkes
$day = "24";
$month = "11";
$year = "2006";
// antal dage/måneder/år der skal tjekkes
$dateday = 28;
// max 12 måneder
$datemonth = 4;
$dateyear = 0;

// laver år om til måneder
$datemonth = ($dateyear*12+$datemonth);
$y=0;
for ($i=0,$r=date("m");$i<$datemonth;$i++,$r++) {
    if ($r == 13) {
        $y++;
        $r=1;
    }
    $calmonth = date("m", mktime(0, 0, 0, $r+1, 0, date("Y")+$y));
    $calyear = date("Y")+$y;
   
    $daysinmonth = cal_days_in_month(CAL_GREGORIAN, $calmonth, $calyear);
    $daysinmonths = $daysinmonths+cal_days_in_month(CAL_GREGORIAN, $calmonth, $calyear);
}
$checktime = ($daysinmonths+$dateday)*24*60*60+time();

$date = mktime(0, 0, 0, $month, $day, $year);

if ($checktime > $date) {
    echo "der er mindre end skæringsdatoen til den pågældende dato";
}
?>
Avatar billede little_kim86 Nybegynder
21. oktober 2005 - 16:03 #15
Det må jeg sige det er du ikke helt dumt til, syntes det er mega svært det med måneder :-P Tag evt et kig omkring www.midtrep.dk :-p
Avatar billede dmdisco Nybegynder
21. oktober 2005 - 17:44 #16
hehe det er det også gav mig lidt problemer og jeg er sikker på at det kan laves på en nemmere måde men det virker vidst nok som det skal ikk?
Avatar billede little_kim86 Nybegynder
22. oktober 2005 - 14:22 #17
Jo har kun lige prøvet det lidt af... Men kigger lige lidt mere på det idag eller i morgen... Skal i byen så må se hva det bliver til. Så får du dine point...
Avatar billede little_kim86 Nybegynder
24. oktober 2005 - 23:18 #18
Det virker jo som det skal rigtig klasse... Ved ikke om det virke med at den selv finder ud af det med de 30 eller 31 dage i måneden... Men må ikke den gør det... Mange tak for hjælpen... 200 point til dig. :-P
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