2010-01-06 5 views
0

J'essaie de réparer une fonction qui retourne le nombre de semaines dans une année donnée.Calculez le nombre de semaines par date

Voilà comment il ressemble:

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 

Lorsque cette fonction est donnée la date 31/12/2010, il retourne 52. Il y a 53 semaines en 2010.

Note: Je ne expérience avec ASP classique, what-so-ever.

Répondre

4

On dirait que cela dépend de quelle semaine est considérée comme la «première semaine de l'année».

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 

Décider quelle est votre définition de la première semaine de l'année, puis utilisez la fonction DatePart en conséquence.

+0

Cela a du sens. Cela s'applique-t-il à toutes les cultures? – roosteronacid

+0

Non, pas nécessairement. Je vous suggère de rester avec la valeur par défaut, vbFirstJan1, il est logique pour la plupart des gens, bien qu'il y ait des exceptions, par exemple, beaucoup de gens s'attendent toujours à ce que le nombre de semaines soit de 52. –

Questions connexes