2010-01-06 3 views
0

Я пытаюсь исправить функцию, которая возвращает количество недель в данном году. неРассчитать количество недель по дате

Вот как это выглядит:

Function GetWeekNo(date) 
    weekOfYear = DatePart("ww", DateValue(date), vbMonday, vbFirstFourDays) 

    If weekOfYear > 52 Then 
     If DatePart("ww", DateValue(date) + 7, vbMonday, vbFirstFourDays) = 2 Then 
      weekOfYear = 1 
     End If 
    End If 

    GetWeekNo = weekOfYear 
End Function 

Когда эта функция задана дата 12-31-2010 она возвращает 52. Есть 53 недель в 2010 году

Примечание: у меня нет опыт работы с классическим ASP, что-то никогда.

ответ

4

Кажется, что это зависит от того, какая неделя считается «первой неделей года».

DatePart("ww", "12/31/2010", vbMonday) 
' returns 53 
' FirstWeekOfYear parameter defaults to vbFirstJan1 
' the week that contains January/01/2010 
' here, its the week starting on December/28/2009 

DatePart("ww", "12/31/2010", vbMonday, vbFirstFourDays) 
' returns 52 
' FirstWeekOfYear parameter set to vbFirstFourDays 
' the first week that has at least four days of the new year 
' here, its the week starting on January/04/2010 

DatePart("ww", "12/31/2010", vbMonday, vbFirstFullWeek) 
' returns 52 
' FirstWeekOfYear parameter set to vbFirstFullWeek 
' the first week that has full seven days of the new year 
' here, again, its the week starting on January/04/2010 

Решите, что ваше определение первой недели года, а затем использовать функцию DatePart соответственно.

+0

Имеет смысл. Это относится ко всем культурам? – roosteronacid

+0

Нет, не обязательно. Я предлагаю вам придерживаться стандартного, vbFirstJan1, это имеет смысл для большинства людей, хотя есть исключения, например, многие люди всегда будут ожидать, что число недель составит 52. –

Смежные вопросы