CALCUL DU NUMÉRO DE SEMAINE

Signaler
Messages postés
67
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
13 septembre 2006
-
 Idriss -
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30827-calcul-du-numero-de-semaine

Messages postés
1
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
1 avril 2011

Bonjour à tous,

j'effectue une calcul de sémaine, j'ai remarqué quelque résultats suivants:
19801229 num sém=1
19801230 num sém=1
19801231 num sém=1

Que devrais-je faire pour que ce numéro positionne à 53 pas à 1?
Merci de votre aide.
Messages postés
30
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
16 avril 2010

Merci pour cette très bonne fonction

''' <summary>
''' Retourne la semaine et l'année d'une date
''' </summary>
''' la date de reference

''' REFERENCE : retourne le numero de la semaine

''' REFERENCE : retourne l' annee en rapport à la semaine

Private Sub GetWeekAndYear(ByVal DateRef As DateTime, ByRef NumWeek As Integer, ByRef Year As Integer)
'Nbr de jour minimum pour faire une semaine
Dim MinDayForWeekOk As Integer = 4
' Semaine calendaire, à modifier le cas-échéant
Dim WeekDayAfterDec As Integer = Me.GetWeekDay(DateRef)

'cas particuliers ou la semaine pourrait se retrouver dans l'année précédent celle de DateRef ou l'annee suivante
Year = DateRef.Year - CInt(Convert.ToInt16((WeekDayAfterDec - DateRef.Day >= (8 - MinDayForWeekOk)) AndAlso (DateRef.Month = 1))) + CInt(Convert.ToInt16((DateRef.Month = 12) AndAlso (DateRef.Day - WeekDayAfterDec >= (24 + MinDayForWeekOk))))

'premier jour de l'année
Dim FirstDayYear As New DateTime(Year, 1, 1)

'numéro du premier jour de l'année
Dim WeekDayFirstDayYear As Integer = Me.GetWeekDay(FirstDayYear)

'no de semaine
NumWeek = DateRef.Subtract(FirstDayYear.AddDays(WeekDayAfterDec - WeekDayFirstDayYear)).Days / 7 + CInt(Convert.ToInt16(WeekDayFirstDayYear < (9 - MinDayForWeekOk)))
End Sub

''' <summary>
''' Retourne le jour de la semaine correspondant au DateTime
''' </summary>
''' date en question
''' <returns>lundi 1, Mardi 2, Mercredi = 3, ..., Dimanche = 7</returns>
Private Function GetWeekDay(ByVal DateToEvaluate As DateTime) As Integer
Return (CInt(DateToEvaluate.DayOfWeek) + 6) Mod 7 + 1
End Function
Messages postés
5
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
2 novembre 2006

En effet, j'avais oublié de donner la fonction GetWeekDay().

Celle que tu as définit est bonne et correpond à la mienne :

/// <summary>
/// Retourne le jour de la semaine correspondant au DateTime
/// </summary>
/// date en question


/// <returns>lundi 1, Mardi 2, Mercredi = 3, ..., Dimanche = 7</returns>
private int GetWeekDay(DateTime DateToEvaluate)
{
return ((int)DateToEvaluate.DayOfWeek + 6) % 7 + 1;
}

Merci Flysun d'avoir relevé que l'année pouvait servir aussi.
Afficher les 22 commentaires