public static string WeekNumber(DateTime dateTime, DayOfWeek firstDayOfWeek = DayOfWeek.Sunday)
{
string weekFormat;
if (firstDayOfWeek == DayOfWeek.Sunday)
{
weekFormat = "0";
}
else if (firstDayOfWeek == DayOfWeek.Monday)
{
weekFormat = "1";
}
else
{
throw new Exception(string.Format("invalid weekday supplied {0}", firstDayOfWeek));
}
// ReSharper disable once PossibleNullReferenceException
int weekNumber = DateTimeFormatInfo.CurrentInfo.Calendar.GetWeekOfYear(
dateTime,
CalendarWeekRule.FirstDay,
firstDayOfWeek);
string formatted = string.Format("{0:yyyy}W{1}{2}", dateTime, weekFormat, weekNumber.ToString("D2"));
return formatted;
}