Avatar billede webcreator Nybegynder
05. december 2004 - 19:11 Der er 12 kommentarer og
1 løsning

Læg én dag til dato

Hej Eksperter.

Jeg har datoen 2004-12-05, som jeg ønsker skal blive til 2004-12-06 i systemet (usynlig for brugeren). Jeg har forsøgt at lægge én dag til på flg. måde :

$date = date($date, strtotime("+1 day"));

Ovenstående virker dog ikke - hvorfor ?
Avatar billede fizz Nybegynder
05. december 2004 - 19:19 #1
$date = date($date, strtotime($date)+86400);

og $date er et dårligt navn til en variabel.... kald den dato i stedet for:

$dato = date($dato, strtotime($dato)+86400);

86400 er sekunder på et døgn
Avatar billede webcreator Nybegynder
05. december 2004 - 19:20 #2
Mange tak for hjælpen - det prøver jeg lige.

Men med hvilken ret kalder du mine variabler dårligt navngivet? Jeg foretrækker at holde tingene på engelsk.
Avatar billede webcreator Nybegynder
05. december 2004 - 19:22 #3
Din løsning virkede desværre heller ikke. Det er meget underligt. Skulle ellers mene, at min egen også burde virke.
Avatar billede jakoba Nybegynder
05. december 2004 - 19:27 #4
Når du vil regne på datoer er det bedst at benytte timestams

$dendag = strtotime("2004-12-05");  // antal sekunder siden en dag i 1970
$dagenfoer = $dendag -24*60*60;    // træk antal sekunder pr dag fra
$nydato = date( "Y-m-d" );          // gør til UTC datostreng
echo $nydato;          // skulle gerne skrive '2004-12-06'
Avatar billede jakoba Nybegynder
05. december 2004 - 19:30 #5
navnet 'date' er uheldigt valgt fordi det er det samme navn som funktionen 'date' har. Det kan godt være dit program overlever den slags forvirring, men det er ikke sikkert og desuden bliver du nok selv forvirret af det mår du prøver at forstå koden 2 måneder efter når der er brug for en rettelse.
Avatar billede jakoba Nybegynder
05. december 2004 - 19:35 #6
Ups.  tredie linie er gal, det skal være
  $nydato = date( "Y-m-d", $dagefoer );          // gør til UTC datostreng
så php ved hvilket tidspunkt der skal formatteres.
Avatar billede webcreator Nybegynder
05. december 2004 - 19:40 #7
Hej Jakob.

Ok, mange tak for den udredning. I virkeligheden hedder min variabel to_date - så jeg tror ikke mit problem ligger dér - men ellers vil jeg give dig helt ret.

Jeg forsøger mig lige med din løsning :)
Avatar billede webcreator Nybegynder
05. december 2004 - 19:42 #8
Hm, jeg får i stedet datoen 1970-01-01
Avatar billede jakoba Nybegynder
05. december 2004 - 19:48 #9
nok fordi jeg stavede galt (udelod 'n' i $dagenfoer)
Avatar billede webcreator Nybegynder
05. december 2004 - 19:52 #10
Ja, self. - godt set :)
Tak for hjælpen - svar tak :)
Avatar billede webcreator Nybegynder
05. december 2004 - 19:54 #11
Til andres orientering skal det siges, at minus naturligvis skulle være plus. Det færdige resultat :

$to_date = date("Y-m-d", (strtotime($to_date)+24*60*60));
Avatar billede fizz Nybegynder
06. december 2004 - 22:55 #12
ååårh!

man kalder da ikke variabler med samme navne som procedurer !
Avatar billede webcreator Nybegynder
16. januar 2005 - 03:04 #13
.
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