I have the following Sub within my class. I have no errors but the results do not match ISO-8601 standards
Private Sub calculateAllProperties(ByVal dt As Date)
Select Case dt.DayOfWeek
Case DayOfWeek.Monday
m_CurrentWeekStartDate = dt
Case DayOfWeek.Tuesday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -1, dt)
Case DayOfWeek.Wednesday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -2, dt)
Case DayOfWeek.Thursday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -3, dt)
Case DayOfWeek.Friday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -4, dt)
Case DayOfWeek.Saturday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -5, dt)
Case DayOfWeek.Sunday
m_CurrentWeekStartDate = DateAdd(DateInterval.Day, -6, dt)
End Select
'Now we have our start point of m_CurrentWeekStartDate we can calculate all other properties.
m_CurrentWeekStartYear = DatePart(DateInterval.Year, m_CurrentWeekStartDate)
m_CurrentWeekNo = DatePart(DateInterval.WeekOfYear, m_CurrentWeekStartDate, Microsoft.VisualBasic.FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)
m_CurrentWeekNoYear = CurrentWeekNo.ToString("D2") & "-" & CurrentWeekStartYear.ToString
m_CurrentYearWeekNo = CurrentWeekStartYear.ToString & "-" & CurrentWeekNo.ToString("D2")
m_PreviousWeekStartDate = DateAdd(DateInterval.Day, -7, m_CurrentWeekStartDate)
m_PreviousWeekStartYear = DatePart(DateInterval.Year, m_PreviousWeekStartDate)
m_PreviousWeekNo = DatePart(DateInterval.WeekOfYear, m_PreviousWeekStartDate, Microsoft.VisualBasic.FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)
m_PreviousWeekNoYear = PreviousWeekNo.ToString("D2") & "-" & PreviousWeekStartYear.ToString
m_PreviousYearWeekNo = PreviousWeekStartYear.ToString & "-" & PreviousWeekNo.ToString("D2")
End Sub
Some example of the values returned from m_CurrentWeekNoYear for a given date dt
- 20/07/2015 -> 30-2015 correct
- 09/03/2015 -> 11-2015 correct
- 29/12/2014 -> 53-2014 incorrect should be 01-2015... using 02/01/2015 also gave 53-2014
- 05/01/2015 -> 01-2015 incorrect should be 02-2015... using 09/01/2015 also gave 01-2015
- 30/12/2013 -> 53-2013 incorrect should be 01-2014... using 04/01/2014 also gave 53-2013
- 06/01/2014 -> 02-2014 correct
Then when I got to a year that actually has 53 weeks it works.
- 28/12/2009 -> 53-2009 correct
- 04/01/2010 -> 01-2010 correct
Any ideas where I've gone wrong?