webForumDet fria alternativet

Strul med veckonummer

14 svar · 548 visningar · startad av bassebhu

bassebhuMedlem sedan nov. 20016 480 inlägg
#1

Hej!

date("W", mktime(0,0,0,1,1,2005)) resulterar i vecka 53 för mig.

Är denna klämvecka en bugg eller har jag tänkt fel?

PeeerMedlem sedan mars 20025 907 inlägg
#2

Ibland förekommer det 53 veckor på ett år. 365/7 blir lite mer än 52, så för att inte veckorna ska bli förskjutna så läggs det in en extra vecka ibland. Precis som med skottdagar.

Eller är jag helt ute och cyklar nu!?

tydalMedlem sedan juni 20034 013 inlägg
#3

Vecka 53 blir det om den första januari är en fredag.

bassebhuMedlem sedan nov. 20016 480 inlägg
#4

ok, så om det står v. 53 i en webbkalender så är det helt normalt? :)

PeeerMedlem sedan mars 20025 907 inlägg
#5

Ja eftersom det är vecka 53 så vore det konstigt om det inte står v. 53 där.

tydalMedlem sedan juni 20034 013 inlägg
#6

Har tydligen även inträffat på lördagar också, så det kanske är lika bra att man drar den officiella definitionen. Om veckan efter vecka 52 har fler dagar på det "gamla" året än det nya så blir det vecka 53.

bassebhuMedlem sedan nov. 20016 480 inlägg
#7

Och på samma vis så kan ett år ha två stycken v. 1? Detta blev mer komplicerat än jag hade önskat.

Jag håller nämligen på med en veckobläddrare och tänkte då skicka med v=1 som querystring om man vill visa vecka 1, men det håller ju inte om det ska finnas två såna på vissa år. hm.

Hur brukar man göra veckobläddrare? Är det bättre att gå efter datumet på veckornas första dag? Hur ska man i så fall ta reda på vilken vecka som blir föregående och nästa? +- 7 håller väl inte heller, eller blir åtminstone knöligt då alla månader har olika antal dagar etc.

Tackar för svar!

PeeerMedlem sedan mars 20025 907 inlägg
#8

bassebhu skrev:

Och på samma vis så kan ett år ha två stycken v. 1? Detta blev mer komplicerat än jag hade önskat.

Nej? Sista veckan ett år fortsätter ofta en bit in på det nya året. 1 januari i år hade ex. veckonummer 52. Eller missförstod jag dig nu?

tydalMedlem sedan juni 20034 013 inlägg
#9

bassebhu skrev:

Och på samma vis så kan ett år ha två stycken v. 1?

Tja, fast det räknas ju ändå till nästa år. Med vecka 1 ett visst år menar man ju den första veckan.

bassebhu skrev:

Hur brukar man göra veckobläddrare? Är det bättre att gå efter datumet på veckornas första dag?

Ja.

bassebhu skrev:

Hur ska man i så fall ta reda på vilken vecka som blir föregående och nästa? +- 7 håller väl inte heller, eller blir åtminstone knöligt då alla månader har olika antal dagar etc.

Alla veckor har ju sju dagar, så jag tycker inte det verkar så bökigt.

tydalMedlem sedan juni 20034 013 inlägg
#10

Peeer skrev:

1 januari i år hade ex. veckonummer 52.

Och 31 december nästa år har ex. veckonummer 1.

bassebhuMedlem sedan nov. 20016 480 inlägg
#11

tydal skrev:

Alla veckor har ju sju dagar, så jag tycker inte det verkar så bökigt.

Allright. Om vi säger att jag har detta:

date("Y-m-d", mktime(0,0,0,$_GET['m'],$_GET['wd'],$_GET['y']))

(där m = månad, wd = första veckodagen och y = år)

Hur lägger jag på resp. drar bort 7 dagar från det där och månader och år etc blir rätt?

tydalMedlem sedan juni 20034 013 inlägg
#12

Det är på dag-parametern du drar bort och lägger till, alltså där du har $_GET['wd'] i ditt exempel.

bassebhuMedlem sedan nov. 20016 480 inlägg
#13

ja, men om wd är under 7 eller över typ 25 så kommer jag ju att få negativa resp för stora tal om jag adderar/subtraherar med 7...? vilket kommer leda till att jag kommer att få problem vid varje månads- och årsbyte.

går det inte bara att sätta något liknande date(blaha) + 7 så får man det datumet fast 7 dagar senare, -7 för tidigare? Jag vill helst inte behöva böka med att räkna ut om det kommer att bli månads-/årsbyten och om det är skottår osv osv..

tydalMedlem sedan juni 20034 013 inlägg
#14

bassebhu skrev:

ja, men om wd är under 7 eller över typ 25 så kommer jag ju att få negativa resp för stora tal om jag adderar/subtraherar med 7...? vilket kommer leda till att jag kommer att få problem vid varje månads- och årsbyte.

Det är tur att inte mktime kan höra hur du underskattar honom. Det blir inga problem. Mktime är till för att användas på det viset. Prova så får du se. Eller läs själv i manualen: http://se.php.net/mktime

bassebhuMedlem sedan nov. 20016 480 inlägg
#15

tydal skrev:

Det är tur att inte mktime kan höra hur du underskattar honom. Det blir inga problem. Mktime är till för att användas på det viset. Prova så får du se. Eller läs själv i manualen: http://se.php.net/mktime

Tjusigt! Det var precis som det borde fungera då :D Jag var på väg precis åt det hållet, men kunde inte tänka mig att det verkligen var så listigt.

Tack :D

129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)