Det er derfor jeg efterspørger muligheden for at lægge 1 (eller flere) år til en dato. F.eks. for at finde ud af hvilken ugedag en given fødselsdato er om 2 år.
Nu er det godt nok ikke relevant i din situation, men jeg vil alligevel lige gøre opmærksom på at man nogle gange skal finte sig uden om sommertidsskift. Her er lidt demo-kode:
Ellers er du nødt til at gøre det "manuelt", men hvis din dato er formateret lige som den, din date leverer, er det heller ikke svært.
$dato='27-01-1845'; list($d,$m,$a)=explode('-',$dato); $a++; if(2==$m && 29==$d){ // 29/2 laver vi bare om til 28/2 $d=28; } $nydato="$d-$m-$a";
Synes godt om
Slettet bruger
25. juli 2006 - 20:33#14
Hov, nu bad du jo om +2 år i selve teksten, selv om overskriften sagde +1 år. Så her er lige en funktion, som kan bruges lidt mere generelt:
function addyear($dato,$antal=1){ $dato='27-01-1845'; list($d,$m,$a)=explode('-',$dato); $a=$a+$antal; if(2==$m && 29==$d){ // 29/2 laver vi bare om til 28/2 $d=28; } return "$d-$m-$a"; }
Den kan bruges på to måder:
$nydato = addyear($gammeldato); // lægger et år til $nydato = addyear($gammeldato, 2); // lægger to år til
Synes godt om
Slettet bruger
25. juli 2006 - 20:33#15
Og så skal linien med $dato='27-01-1845'; i koden naturligvis fjernes.
Ahhh... Den holder ikke helt for den springer jo generelt 29-02 over. Så hvis startdatoen er 29-02-2008 bliver samtlige datoer efterfølgende til 28-08. Også 2012 hvor det er skudår igen..
Altid rart med lidt tilbagemelding - virker 25/07-2006 20:27:12 eller ej?
Har desværre ikke lige selv adgang til en PHP-installation i øjeblikket.
Synes godt om
Slettet bruger
25. juli 2006 - 21:39#19
Det er korrekt, at den tager ikke komplet hensyn til skudår. Det er fordi koden først blev skrevet til kun at håndtere at lægge et enkelt år til (og et enkelt år efter den 29/2 er det ikke skudår ;-)
function addyear($dato,$antal=1){ list($d,$m,$a)=explode('-',$dato); $a=$a+$antal; if(2==$m && 29==$d){ if(!(0==$a % 4 && 0 != $a % 400)){ // skudår når år er deleligt med 4 men ikke med 400 // Det er IKKE skudår nu, så dato sættes til 28 $d=28; } } return "$d-$m-$a"; }
Synes godt om
Slettet bruger
25. juli 2006 - 21:41#20
nielle: Uden at afprøve lige nu, så ja og nej. På en Unix/Linux og andet virker den. På Windows virker den ikke da Windows ignorerer fortegnsbitten i den 32-bit signed integer, den benytter til tidsværdier.
Jeg har faktisk et tillægsspørgsmål men det opretter jeg med nye point...
Synes godt om
Ny brugerNybegynder
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.