---
title: "Räkna ut datumet på första veckodagen på en viss vecka och år"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/177203-räkna-ut-datumet-på-första-veckodagen-på-en-viss-vecka-och-år"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "jme"
published: "2009-02-26T21:05:57.000Z"
updated: "2009-02-27T08:31:25.000Z"
replies: 4
views: 1396
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/177203-räkna-ut-datumet-på-första-veckodagen-på-en-viss-vecka-och-år"
---

# Räkna ut datumet på första veckodagen på en viss vecka och år

## #1 — jme, 2009-02-26T21:05Z

Hej. 

Hur räknar man ut datumet på första veckodagen på en viss vecka och ett år? 
 
T ex: år 2009 och vecka 1.

Enligt kalendern så infaller måndagen under vecka 1 redan 29.12.2008!

Permalänk: https://www.webforum.nu/p/177203

## #2 — Micke_xyz, 2009-02-26T21:24Z

Gjorde nyligen en funktion som räknar ut veckonummer på givet datum. Det är inte helt trivialt. Om året t.ex. börjar på en lördag så måste du kolla om föregående år är skottår eller ej. Jämför år 2000 med år 2005, där skiljer det sju dagar på samma veckodag och vecka mellan de två åren.

RED: Ibland läser jag inte i vilken avdelning det är postat i, detta är ju i princip gratis i PHP, ett par loopar på sin höjd så är det klart. Kolla funktionen "Date".

Permalänk: https://www.webforum.nu/p/2173564

## #3 — Pedda, 2009-02-26T21:38Z

```
<?php 
function getFirstDayOfWeek($year, $week)
{
	$offset = date('w', mktime(0,0,0,1,1, $year));
	$offset = ($offset < 5) ? 1 - $offset : 8 - $offset;
	$monday = mktime(0, 0 , 0, 1, 1 + $offset, $year);
	$date = strtotime('+' . ($week - 1) . ' weeks', $monday);
	return date('Y-m-d', $date);
}

echo getFirstDayOfWeek(2009, 1);
?>
```

Permalänk: https://www.webforum.nu/p/2173567

## #4 — jme, 2009-02-26T22:03Z

Tack för förslagen.

Jag uttryckte mig lite dåligt. 

Jag kom på att det räcker inte att enbart veta veckonummret och årtalet då jag även skall göra länkar som för användaren bakåt och framåt en vecka i taget.

Tar jag då datumet 31.12.2008 och har följande värden:

år: 2008
vecka: 1

och går bakåt en vecka så blir det tokfel!

Då blir det 31.12.2007!

Jag måste alltså ta även med månaden. Jag resonerar det så att om det är december (12), 2008 och vecka 1 så lägger jag till ett på året så att det blir 2009. Om jag då går tillbaka en vecka så får jag 29.12.2008.

Pedda: testade din metod med smärre förändringar:

```php

function getFirstDayOfWeek($year, $month, $week)
{
	if($month == 12 && $week == 1)
	{
		$year++;
	}
	$offset = date('w', mktime(0,0,0,1,1, $year));
	$offset = ($offset < 5) ? 1 - $offset : 8 - $offset;
	$monday = mktime(0, 0 , 0, 1, 1 + $offset, $year);
	$date = strtotime('+' . ($week - 1) . ' weeks', $monday);
	return date('Y-m-d', $date);
}

echo getFirstDayOfWeek(2008, 12, 1); // 2008-12-29 och som är rätt!
```

Permalänk: https://www.webforum.nu/p/2173574

## #5 — Pedda, 2009-02-27T08:31Z

I länkarna är det väl enklast att du skickar med datumet, och för föregående drar du bort sju dagar och länken till nästa vecka så lägger du till sju dagar till datumet bara.
Måste ju vara det enklaste.

Permalänk: https://www.webforum.nu/p/2173591

---

Tråden på webben: https://www.webforum.nu/amne/php/177203-räkna-ut-datumet-på-första-veckodagen-på-en-viss-vecka-och-år
