---
title: "Få fram datum på den första dagen med hjälp av vecka och år"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/152172-få-fram-datum-på-den-första-dagen-med-hjälp-av-vecka-och-år"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Nickemannen"
published: "2006-10-06T08:08:33.000Z"
updated: "2006-10-06T10:39:44.000Z"
replies: 2
views: 469
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/dotnet/152172-få-fram-datum-på-den-första-dagen-med-hjälp-av-vecka-och-år"
---

# Få fram datum på den första dagen med hjälp av vecka och år

## #1 — Nickemannen, 2006-10-06T08:08Z

Jag undrar om någon sitter på en kodsnutt där man med hjälp av År och Veckonummer kan få fram datumet på den första dagen i den veckan.

Helst i C# men även de andra ramverksspåken går bra.

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

## #2 — Engine^, 2006-10-06T09:39Z

C#

```
DateTime dtFoo = new DateTime( året, 1, 1 );

dtFoo.AddDays( 7 * veckonummer );

if ( dtFoo.DayOfWeek != DayOfWeek.Monday )
  dtFoo.AddDays( DayOfWeek.Monday - dtFoo.DayOfWeek ); // vet inte om man får göra så, men du kanske förstår poängen.

return dtFoo;
```

Det kanske är någon annan miss här också, eftersom jag brukar ha en förmåga att missa saker när jag kodar i en textbox ;)

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

## #3 — Nickemannen, 2006-10-06T10:39Z

> **Engine^ skrev:**
>
> C#
>
>
> ```
> DateTime dtFoo = new DateTime( året, 1, 1 );
> 
> dtFoo.AddDays( 7 * veckonummer );
> 
> if ( dtFoo.DayOfWeek != DayOfWeek.Monday )
>   dtFoo.AddDays( DayOfWeek.Monday - dtFoo.DayOfWeek ); // vet inte om man får göra så, men du kanske förstår poängen.
> 
> return dtFoo;
> ```
>
> 
> Det kanske är någon annan miss här också, eftersom jag brukar ha en förmåga att missa saker när jag kodar i en textbox ;)

Din ide är bra men fungerar tyvärr inte så bra eftersom den 1 Januari kan ligga mitt i vecka 1 eller i mitten av vecka 52/53 så min lösning blev följande med 4 dagarsregeln.

Den hade säkert gått att göra mer generell men fungerar utmärkt i mitt syfte med 4 dagarsregeln och att veckan börjar med måndag.

```
				int intSelectedYear = (int)this.cmbYearWeek.SelectedItem;
				DateTime dtFirstWeekStartDate = this.GetFirstDateOfFirstWeekInYear(intSelectedYear);
				
				dtStartDate = dtFirstWeekStartDate.AddDays(7*(((int)this.nupdWeek.Value)-1));

				dtEndDate = dtStartDate.AddDays(6);

		private DateTime GetFirstDateOfFirstWeekInYear(int Year)
		{
			int intSelectedYear = Year;
			DateTime dt = DateTime.Parse(intSelectedYear+"/01/01");
			System.Globalization.Calendar objCalendar = new System.Globalization.CultureInfo("sv-se").Calendar;
			int intWeek = objCalendar.GetWeekOfYear(dt,
				System.Globalization.CalendarWeekRule.FirstFourDayWeek, System.DayOfWeek.Monday);
			
			DayOfWeek dayOfWeek = objCalendar.GetDayOfWeek(dt);
			
			if(intWeek != 1)
			{
				switch(dayOfWeek)
				{
					case DayOfWeek.Friday :
						dt = dt.AddDays(3);
						break;
					case DayOfWeek.Saturday :
						dt = dt.AddDays(2);
						break;
					case DayOfWeek.Sunday :
						dt = dt.AddDays(1);
						break;
				}
			}
			else
			{
				switch(dayOfWeek)
				{
					case DayOfWeek.Tuesday :
						dt = dt.AddDays(-1);
						break;
					case DayOfWeek.Wednesday :
						dt = dt.AddDays(-2);
						break;
					case DayOfWeek.Thursday :
						dt = dt.AddDays(-3);
						break;
				}
			}
			return dt;
		}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/152172-få-fram-datum-på-den-första-dagen-med-hjälp-av-vecka-och-år
