Avatar billede carlo1 Nybegynder
20. november 2006 - 11:20 Der er 10 kommentarer og
2 løsninger

Find dagen før

Jeg har lavet en kalenderi PHP, og bruger bl.a. mktime, men hvordan finder jeg dagen før?

Jeg bruger bl.a.

$maaned=date("m");
$aar=date("Y");

$tidspunkt=mktime(0,0,0,$maaned,1,$aar);

Det kunne være lækkert hvis man bare kunne sige $tidspunkt-1, men så let er det vel ikke :) ? Jeg tænker hvis det er den 1., hvordan fortæller jeg den at den skal have fat i sidste dag i forrige måned?
Avatar billede fixxxer Nybegynder
20. november 2006 - 11:22 #1
echo strtotime("-1 day"), "\n";

Et forsøg værd.
Avatar billede fixxxer Nybegynder
20. november 2006 - 11:22 #2
Avatar billede kinderaeg Nybegynder
20. november 2006 - 11:29 #3
Eller du kunne bare skrive:

$tidspunkt=mktime(0,0,0,$maaned,0,$aar);
Avatar billede intel4004 Novice
20. november 2006 - 12:19 #4
Hvis du vil en dage længere bagud relativt til et unixtimestamp så kan man vel blot sige:

<?php
$yesterday_time = $tidspunkt - (3600 * 24);
?>

Men det er måske ikke lige det du mener?

Mvh Intel4004
Avatar billede carlo1 Nybegynder
20. november 2006 - 12:35 #5
Sagen er den at jeg har en løkke der udregner datoer, ugedage osv. Datoerne er links som man kan trykke på og så tager den datoen med til en anden side. Jeg ville gerne gøre sådan så jeg også kan dagen før den egentlige dato med over hvis forstår. Jeg trykker f.eks. på d 1/12, så skal den også tage 30/11 med.
Avatar billede kinderaeg Nybegynder
20. november 2006 - 12:52 #6
altså, du har måned, dag og år med, for at danne tidspunkt, så anvender du bare dag-1 til at lave dagen før. mktime finder selv ud af at beregne den rigtige dato, også selv og det indtastede, rent logisk, ikke er en dato.

$yesterday = mktime(0,0,0,$maaned,$dag-1,$aar);
Avatar billede carlo1 Nybegynder
20. november 2006 - 13:32 #7
Ahh merde, det er faktisk bedre hvis man kan vente med udrejningen til "side2". Er det muligt at hvis man bare får en datostreng via linket at den så stadig kan regne det ud?

Altså det ser sådan ud:
<a href='side2.php?dato=$aar-$maaned-$startdato'>$startdato</a>

På side 2 får jeg så een eller anden dato i formatet år-måned-dato. Kan jeg stadig bruge ovenstående metode?
Avatar billede kinderaeg Nybegynder
20. november 2006 - 13:36 #8
Du kan bruge explode på side to:

$arr = explode('-', $_GET["dato"]);

Så har du år i $arr[0], måned i $arr[1] og dag i $arr[2] (såfremt dit format ikke ændrer sig (år-måned-dag)), ellers kan du sende datoen over i tre parametre:

echo "<a href='side2.php?year=$aar&amp;month=$maaned&amp;day=$startdato'>$startdato</a>";
Avatar billede mcardle Nybegynder
20. november 2006 - 21:48 #9
Du skal bruge ét cifret tal til mktime(), den kan ikke finde ud af f.eks. 02.

$day = date("j")-1;
$month = date("n");
$year = date("Y");

$tidspunkt=mktime(0,0,0,$month,$day,$year, -1);

Det her burde virke...
Avatar billede carlo1 Nybegynder
24. november 2006 - 13:29 #10
Så virker det! :) kinderaeg og mcardle i må dele, jeg har brugt begge jeres svar, mange tak.
Avatar billede mcardle Nybegynder
24. november 2006 - 17:01 #11
Tak, tak...
Avatar billede kinderaeg Nybegynder
25. november 2006 - 01:24 #12
Svar
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