Forum de discussion
Forum « Programmation ASP » (archives)
Re: Calcul de date pour trouver le premier jour de la semaine et le numéro de semaine
Envoyé: 24 août 2004, 9h19 par Oznog
Effectivement, c'est un autre problème. Peut importe le jour de départ, il ne faut pas retirer à la date la position du jour mais plutôt cette (position - 1) sinon tu arrive à 0 qui est un jour avant le premier jour de la semaine. Si tu veux trouver le premier samedi d'une semaine (débutant le samedi) et que tu est le samedi ça donnerais date - (1 jour)! Alors que tu devrait bien sûr soustraire 0! Toujours le même calcul position -1 Et donc date-(1-1).
Exemple avec vendredi comme jour courant.
Samedi = 1
Donc Vendredi = 7
Selon ton calcul tu devrait retirer de la date du vendredi 7 jours! Ce qui retourne bien sûr le vendredi avant le samedi. Tu veux plutôt trouver le jour (7-1).
Le calcul devrait donc être :
maDate = DateValue("01/05/2006")
' Sur samedi
response.Write maDate & " - " & Weekday(maDate,vbSaturday) & " = " & (maDate - (Weekday(maDate,vbSaturday)-1)) & "<br >"
' Sur dimanche par défaut
response.Write maDate & " - " & Weekday(maDate) & " = " & (maDate - (Weekday(maDate)-1)) & "<br >"
Note que j'utilise "Weekday", plus approprié.
Par contre pour le numéro de la semaine c'est autre chose. Selon ton dernier exemple il semble avoir un bogue mais c'est la façon j,iomagine de régler une impasse :
maDate = DateValue("01/05/2006")
response.Write "Semaine n°: "&DatePart("ww",maDate,vbSaturday)&"<br>"
response.Write "Semaine n°: "&DatePart("ww",maDate)&"<br>"
Les deux donne le même résultat alors qu'il devrait y avoir une différence. Le problème semble avoir été tout simplement patché par le moteur VBS! Mais quand on y pense le problème est aussi insolluble. Si on cherche la première semaine d'une année en spécifiant une journée de début de la semaine. De qu'elle semaine font partie les jours du 1er janvier au jour AVANT la première journée de la semaine? Deux solutions, ou bien elles font partie de la dernière semaine de l'année passée, ce qui n'est bien sûr pas un numéro de la semaine de l'année courrante. Ou bien on "patch" en disant que c'est la première semaine (à défaut de pouvoir dire 0 car une semaine 0 n'existe bien sûr pas)!!
Alors tout ce qui est avant la première semaine est aussi dit de la première semaine. Il me semble que ça doit être une norme dans le millieu des dates. Car c'est très fréquant, même si tu ne spécifie pas une journée particulière par défaut c'est dimanche alors l'erreur ou cette situation "impossible" se reproduit chaque anné où le dimanche n'est pas le 1er janvier.
J'espère que ça répond à tes questions.
Ciao
Oznog
Réponses
|