Gå til innhold

[Løst]mktime for å finne neste måned oppfører seg merkelig


Anbefalte innlegg

Jeg bruker følgende funksjon for å finne neste måned:

 

mktime(0, 0, 0, date("m")+1, date("d"), date("Y"));

 

Men i dag oppdaget jeg at neste måned ble "03", altså mars. Det er greit at i dag er det 29. januar, og at dette ikke er ett skuddår så 29. februar finnes ikke, men blir dette rett? Eller er det jeg som bruker funksjonen feil/burde brukt noe annet for å finne neste måned?

 

Syntes dette var litt merkverdig.

Lenke til kommentar
Videoannonse
Annonse

Og btw, istedetfor å lage ny tråd:

Jeg vil ha neste mandag og onsdag, inklusiv denne dagen. Har denne koden:

min(strtotime("next Monday"),strtotime("next Wednesday"))

 

Problemet er at hvis den kjøres på en mandag, så sier den at neste gang er på onsdag. Jeg vil at den skal være inklusiv, så at neste mandag eller onsdag er idag (om det er mandag idag). Og tilsvarende for onsdag.

Endret av MikkelRev
Lenke til kommentar
Jeg bruker følgende funksjon for å finne neste måned:

 

mktime(0, 0, 0, date("m")+1, date("d"), date("Y"));

 

Men i dag oppdaget jeg at neste måned ble "03", altså mars. Det er greit at i dag er det 29. januar, og at dette ikke er ett skuddår så 29. februar finnes ikke, men blir dette rett? Eller er det jeg som bruker funksjonen feil/burde brukt noe annet for å finne neste måned?

 

Syntes dette var litt merkverdig.

Det er rett, f. eks vil date('d.m.Y',mktime(0,0,0,1,35,2010)) returnere 04.02.2010

 

Litt på siden så har jeg oppdaget at mktime kan ha litt problemer med antall timer når vi stiller klokka, da er gmmktime er greit å bruke i stedet for, da gmt ikke oppererer med sommer og vinters tid (så vidt jeg vet).

Edit: Mulig det kan være noe med tidssone innstillinger å gjøre, har ikke brukt så mye tid på det.

Endret av Crowly
Lenke til kommentar

Men folkens

 

echo date("d-m-Y", mktime(0, 0, 0, date("m")+1, date("d"), date("Y")));
echo "<br/>";
echo date("d-m-Y", strtotime("+1 month"));

 

Gir

 

01-03-2010

01-03-2010

 

Det blir jo ikke lettere å finne neste mnd. med strtotime...

 

EDIT:

Løsningen ble å ta utgangspunkt i den 1. i måneden vi er i, og så plusse på en mnd.

 

echo date('d-m-Y', strtotime('+1 month', strtotime(date("Y")."-".date("m")."-01")));

Endret av xibriz
Lenke til kommentar
Og btw, istedetfor å lage ny tråd:

Jeg vil ha neste mandag og onsdag, inklusiv denne dagen. Har denne koden:

min(strtotime("next Monday"),strtotime("next Wednesday"))

 

Problemet er at hvis den kjøres på en mandag, så sier den at neste gang er på onsdag. Jeg vil at den skal være inklusiv, så at neste mandag eller onsdag er idag (om det er mandag idag). Og tilsvarende for onsdag.

 

Ingen forslag?

Lenke til kommentar
Og btw, istedetfor å lage ny tråd:

Jeg vil ha neste mandag og onsdag, inklusiv denne dagen. Har denne koden:

min(strtotime("next Monday"),strtotime("next Wednesday"))

 

Problemet er at hvis den kjøres på en mandag, så sier den at neste gang er på onsdag. Jeg vil at den skal være inklusiv, så at neste mandag eller onsdag er idag (om det er mandag idag). Og tilsvarende for onsdag.

 

Ingen forslag?

 

 

Du kan beholde koden din, å i tillegg kjøre en if

 

if (date("N") == 1 || date("N") == 3) echo "i dag"
else echo /* kode for antall dager til neste mandag eller onsdag */

Endret av xibriz
Lenke til kommentar
$days_in_month = cal_days_in_month ( int $calendar , int $month , int $year );

$next_month = $days_in_month * 86400;

 

Hvordan skal det hjelpe å gange antall dager i en gitt måned med antall sekunder i en dag?

 

Da kan du plusse på antall sekunder i måneden for å finne neste måned?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...