webForumDet fria alternativet

Datum för måndag vecka x

PHP

4 svar · 299 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Frågan#1

Jag har ett veckonummer, exempelvis 38. Nu vill jag veta vilket datum det är på måndagen den veckan. Hur gör jag?

Tack på förhand!

Medlem sedan okt. 2001538 inlägg
#2

Hade (återigen) inget direkt för mig så skrev ihop en liten funktion som klarade av de småtester jag gjorde. Finns säkert snabbare och effektivare sätta tt göra det på, kanske till och med finns en phpfunktion för det redan, men här är min lösning:

<?php

function getMondayFromWeek($week="")
{
	if (strlen($week) < 1){
		return "ERROR";
	}

	$days = $week * 7;

	$days = $days - 10; // fråga mig inte varför, men utan denna funkar det inte

	$tsFirst = mktime(0,0,0,1,1,date("Y", time()));

	return strtotime("+".$days." day", $tsFirst);
}

echo(date("Y-m-d",getMondayFromWeek(23)));

?>

Principen är att man räknar ut hur många dagar som passerat under dessa x veckor. Sedan mha mktime skapas ett timestamp som representerar den första dagen detta året, och sedan med dessa dagar och den startpunkten, använder man strtotime och plussar på så många dagar till startdatumet, och får fram en ny timestamp som pekar på första måndagen i den veckan.
Alla veckonummer som jag slängde på den klarade den men eftersom jag måste subrahera med 10 och jag inte vet varför, så känns det som att den här funktionen inte är helt... klar för bruk på en produktionsserver... skall testa lite mer, någon annan får gärna komma med åsikter och tankar eller förbättra den.

MVH Patrik

Medlem sedan jan. 2002341 inlägg
#3

Men antalet dagar stämmer väl inte? Det är ju inte så att 1 januari alltid inträffar på en måndag

Medlem sedan mars 20034 471 inlägg
#4

Även bortsett ifrån preys vettiga invändning, så misstror jag funktionen. Vad händer eg för vecka 1? Då är ju $days negativ!

Skarre - jag tror att du måste ha något referensdatum som du VET var en måndag, som du kan räkna ifrån. Eller kolla här:
http://www.a-kok.com/php/datumundervecka.php
(Såg det i en annan tråd.)

Medlem sedan mars 20032 667 inlägg
#5

Och denna tråd är över 1 år gammal. Låt gamla trådar vila i frid.

279 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
142 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
144 ms — ändringar (db)