webForumDet fria alternativet

Strul med veckonummer

PHP

14 svar · 550 visningar · startad av bassebhu

Medlem sedan nov. 20016 480 inlägg
Frågan#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?

Medlem 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!?

Medlem sedan juni 20034 013 inlägg
#3

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

Medlem sedan nov. 20016 480 inlägg
#4

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

Medlem 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.

Medlem 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.

Medlem 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!

Medlem 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?

Medlem 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.

Medlem 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.

Medlem 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?

Medlem 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.

Medlem 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..

Medlem 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

Medlem 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

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)