25. oktober 2005 - 17:27
Der er
30 kommentarer og 2 løsninger
Ugenumrene i speciel måned
Hvis jeg kender måned og år, kan jeg så finde lige præcis de ugenumre som måneden strækker sig over? For oktober 2005, er det eksempelvis 39, 40, 41, 42, 43 og 44 For november 2005 vil det være 44, 45, 46, 47 og 48.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
25. oktober 2005 - 17:32
#1
Således tror jeg f.eks.: $mdr = 10; $year = 2005; $start = mktime(0, 0, 0, $mdr, 1, $year); $slut = mktime(0, 0, 0, ($mdr+1), 0, $year); echo "Første uge: ".date("W", $start) .". Sidste uge: ". date("W", $slut);
25. oktober 2005 - 17:35
#2
Husk i øvrigt at være opmærksom på hvorledes du bestemmer om en uge hører med i en given måned eller ej: * er det når der er dage i ugen, der ligger i måneden? * er det hvis der er flest dage i ugen, der ligger i måneden? * er det hvis mandagen ligger i måneden?
25. oktober 2005 - 17:38
#3
jaw: Så får jeg kun første og sidste uge med. Det givet et problem omkring nytår, når der er skudår... mahler: Det er *når der er dage i ugen, der ligger i måneden
25. oktober 2005 - 17:45
#4
Hvorfor giver det et problem ved nytår i skudår?
25. oktober 2005 - 18:00
#5
Jeg fik vist rodet tingene sammen med skudår kontra antal uger i et givent år. Det jeg mente var: Hvis nu jeg finder start ugen i december til 48 og slutugen som 1, hvordan ved jeg så om der findes en uge 53? Ja, man kan nok regne sig ud af det, men det var bare nemmere hvis der fandtes en metode der returnerede ugenumrene ud fra en given måned og år... Altså noget i retning af getweeks(102005) der så returnerer 39, 40, 41, 42, 43 og 44
25. oktober 2005 - 18:01
#6
Jeg forstår ikke, det er jo præcis hvad min gør! Den henter ugenumrene udfra månedsnummeret og året.
25. oktober 2005 - 18:04
#7
Eller det vil sige, at den henter første og sidste ugenummer. Kør en løkke på de 2, og du har de imellemliggende :) for($i = date("W", $start); $i <= date("W", $slut); $i++) { echo $i . " "; }
25. oktober 2005 - 18:13
#8
Ja, ok. Det fungerer kan jeg godt se. Og dog: 1.januar næste ligger i uge 52, men det tager funktionen ikke højde for... Der returneres ugen som 0.
25. oktober 2005 - 18:13
#9
1.januar næste år mente jeg... Den ligger søndag i uge 52.
25. oktober 2005 - 18:14
#10
Når jeg tester det hos mig får jeg også: Første uge: 48. Sidste uge: 52 Når jeg bruger $mdr = 12; $year = 2005;
25. oktober 2005 - 18:22
#12
Hvordan bruger du den dér? Jeg kan måske se et andet problem ved den, som jeg lige brainer, men den med at et 0 kan jeg ikke umiddelbart fremprovokere.
25. oktober 2005 - 18:25
#13
Hvis du bruger: $mdr = 1; $year = 2006; får du uge 0 for 1.januar 2006.
25. oktober 2005 - 18:27
#14
Nej jeg gør ej. Men du henter jo også nogen datoer og noget, hvordan gør du det. Og det problem jeg snakkede om, er ikke et problem. Og, vil godt lige kommentere din flash fra din side, ser godt ud :)
25. oktober 2005 - 18:34
#15
Får du returneret 52 hvis du bruger 1 og 2006? For jeg får godt 0 ud... Tanx :) Min function ser således ud: function weekcalc() { $mdr = 1; $year = 2006; $start = mktime(0, 0, 0, $mdr, 1, $year); $slut = mktime(0, 0, 0, ($mdr+1), 0, $year); for($i = date("W", $start); $i <= date("W", $slut); $i++) { echo $i . " "; } }
25. oktober 2005 - 18:49
#16
Det er din løkke, som jeg selvf. kan se nu. Men prøv lige: function weekcalc() { $mdr = 1; $year = 2006; $start = mktime(0, 0, 0, $mdr, 1, $year); $slut = mktime(0, 0, 0, ($mdr+1), 0, $year); echo "Start: ".date("W", $start)." slut: ".date("W", $slut); for($i = date("W", $start); $i <= date("W", $slut); $i++) { echo $i . " "; } } Får du så stadig 0 og 5 ?
25. oktober 2005 - 19:14
#17
hvad med <?php $res = array(); $m = 1; $y = 2006; for($d = 1; $d <= cal_days_in_month(CAL_GREGORIAN, $m, $y); $d++) { $t = mktime(0, 0, 0, $m, $d, $y); $w = date("W", $t); if(!in_array($w,$res)) $res[] = $w; } for($i=0;$i<count($res);$i++) echo " " . $res[$i]; ?>
25. oktober 2005 - 19:22
#18
Begge forslag returnerer 0...
25. oktober 2005 - 19:25
#19
Jeg får 52 pg 5 i begge forslag. Har du en anden server du kan teste det på? Og nu tester du det uden alt muligt andet, ikke? Altså i en blank fil.
25. oktober 2005 - 19:40
#20
Jep, blank fil. Testet hos scannet, b-one og enavn med samme resultat 0 som start. Hvad tester du på?
25. oktober 2005 - 19:59
#21
Hmm, det må da have noget med serverens tidsopsætning at gøre eller hvad? Kan det være noget med hvornår ugen definitionsmæssigt starter - søndag eller mandag...
25. oktober 2005 - 20:06
#22
kan du copy paste output fra view source dea min version ind her ?
25. oktober 2005 - 20:25
#24
jeg får: 52 1 2 3 4 5
25. oktober 2005 - 20:26
#25
Jeg ved heller ikke helt hvad du laver. Nu har jeg testet både hos mig selv lokalt og på mit webhotel, og får 52 - 05 begge steder.
25. oktober 2005 - 20:27
#26
Det må da være noget med, at min servers indstillinger er sat til at ugen starter søndag - det er den eneste forklaring jeg kan komme med, uden at vide noget om en servers opsætning...
25. oktober 2005 - 20:32
#27
jeg har aldrig hørt om at en server indstilling sætter HTMLS tags ind i PHP output eller fjerner et mellemrum
25. oktober 2005 - 20:38
#28
Nej, det var heller ikke det jeg mente :) Pastede bare det hele ind. Anyways, løsningen ligger i at bruge *strftime("%V", $t)* - så får jeg det korrekte output. Jeg kan ikke give anden forklaring end noget med serverens opsætning - kan I?
26. oktober 2005 - 10:26
#29
I skal have nogle point, så smid et svar.
26. oktober 2005 - 10:49
#30
et svar fra mig
26. oktober 2005 - 12:18
#31
Og et fra mig.
26. oktober 2005 - 12:29
#32
Tak for jeres tid og hjælp.
Vi tilbyder markedets bedste kurser inden for webudvikling