webForumDet fria alternativet

c# - År, veckonummer -> DateTime

Programmering

1 svar · 4 448 visningar · startad av toha

Medlem sedan dec. 1999707 inlägg
Frågan#1

Skicka en ett årtal och veckonummer och få ut en DateTime som är den första dagen i den aktuella veckan.

		public static DateTime getFirstDayInWeek(int iWeek, int iYear, System.Globalization.CultureInfo culture)
		{
			DateTime d =	new DateTime(iYear, 1, 1);
			d = d.AddDays((iWeek-1)*7);
			int w =	culture.Calendar.GetWeekOfYear(d, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
			if (iWeek == 1 && (w > 50))
				w =	0;
			d = d.AddDays((iWeek-w) * 7);
			int i =			System.Convert.ToInt32(d.DayOfWeek);
			d = d.AddDays(System.Convert.ToInt32(culture.DateTimeFormat.FirstDayOfWeek - i));
			return d;
		}
Medlem sedan dec. 1999707 inlägg
#2

Hittade en bugg. Uppdaterad kod:

		public static DateTime getFirstDayInWeek(int iWeek, int iYear, System.Globalization.CultureInfo culture)
		{
			DateTime d =	new DateTime(iYear, 1, 1);
			d = d.AddDays((iWeek-1)*7);
			int w =	culture.Calendar.GetWeekOfYear(d, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
			if (iWeek == 1 && w > 50)
				w =	0;
			d = d.AddDays((iWeek-w) * 7);
			int i =			System.Convert.ToInt32(d.DayOfWeek);
			int j =			System.Convert.ToInt32(culture.DateTimeFormat.FirstDayOfWeek);
			if (i < j)
				i += 7;
			d = d.AddDays(System.Convert.ToInt32(j - i));
			return d;
		}
378 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
246 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)