Simen Sandelien wrote this nifty code to do just that :
private int WeekNumber_Entire4DayWeekRule(DateTime date)
{
const int JAN = 1;
const int DEC = 12;
const int LASTDAYOFDEC = 31;
const int FIRSTDAYOFJAN = 1;
const int THURSDAY = 4;
bool ThursdayFlag = false;
int DayOfYear = date.DayOfYear;
int StartWeekDayOfYear =
(int)(new DateTime(date.Year, JAN, FIRSTDAYOFJAN)).DayOfWeek;
int EndWeekDayOfYear =
(int)(new DateTime(date.Year, DEC, LASTDAYOFDEC)).DayOfWeek;
StartWeekDayOfYear = StartWeekDayOfYear;
EndWeekDayOfYear = EndWeekDayOfYear;
if( StartWeekDayOfYear == 0)
StartWeekDayOfYear = 7;
if( EndWeekDayOfYear == 0)
EndWeekDayOfYear = 7;
int DaysInFirstWeek = 8 - (StartWeekDayOfYear );
int DaysInLastWeek = 8 - (EndWeekDayOfYear );
if (StartWeekDayOfYear == THURSDAY || EndWeekDayOfYear == THURSDAY)
ThursdayFlag = true;
int FullWeeks = (int) Math.Ceiling((DayOfYear - (DaysInFirstWeek))/7.0);
int WeekNumber = FullWeeks;
if (DaysInFirstWeek >= THURSDAY)
WeekNumber = WeekNumber +1;
if (WeekNumber > 52 && !ThursdayFlag)
WeekNumber = 1;
if (WeekNumber == 0)
WeekNumber = WeekNumber_Entire4DayWeekRule(
new DateTime(date.Year-1, DEC, LASTDAYOFDEC));
return WeekNumber;
}
If you want to read the comments to the code,
see
http://konsulent.sandelien.no/VB_help/Week/
I edited them out so the post would be shorter.
If you could use Visual Basic, you could simply do :
<%
Response.Write("This is this year's week number " & DatePart(DateInterval.WeekOfYear,Date.Today,vbUseS ystemDayOfWeek,vbFirstJan1) & ".")
%>
Maybe you could simply compile an assembly in VB.NET
which sets the week number, and call it from C#.
That seems a lot simpler than using the convoluted C# function quoted above.
Juan T. Llibre
ASP.NET MVP
http://asp.net.do/foros/
Foros de ASP.NET en Español
Ven, y hablemos de ASP.NET...
======================
"purkka" <pu****@discussions.microsoft.com> wrote in message news:45**********************************@microsof t.com...
Hi
I did not find any solution from Internet how to do it. There is a lot of
samples how to retrieve day of the week, but not number of the week.
With rgds
MP