Calculer la prochaine date selon un numero du jour [Résolu]

Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 14:26 - Dernière réponse :
Messages postés
23286
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2018
- 21 oct. 2014 à 22:05
Bonjour,

Je voulais faire une petite fonction qui me retourne en passant en paramètre le numéro jours (Date.Now.DayOfWeek) et je veux atteindre un numéro jours qui existe dans mon base de donnée.

Ex: Ma numéro du jours est 2 et la prochaine est 0
Comment puisse-je afficher la date complet de ma prochaine journée.

Private Function ObtenirNumeroJours(ByVal pNumJours As Integer, ByVal pNumJoursPlannifier As Integer) As Integer

        Dim NbjrRetour As Integer

        If pNumJours < pNumJoursPlannifier Then

            Dim diff As Integer = pNumJoursPlannifier - pNumJours
            For i As Integer = 0 To diff
                NbjrRetour = pNumJours + i
            Next

        Else

            Dim diff As Integer = (7 - pNumJours) + pNumJoursPlannifier
            For i As Integer = 0 To diff - 1
                NbjrRetour = pNumJours + i
            Next

        End If
Afficher la suite 

Votre réponse

16 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 21 oct. 2014 à 18:25
0
Merci
Bonjour,
Déjà :
pourquoi donc une boucle ?
Elle aboutit à l'ajout de diff, non ?

Commenter la réponse de ucfoutu
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- Modifié par RahSam le 21/10/2014 à 18:35
0
Merci
Parce que suppossant que mon numéro du jours est 3 et ma prochaine numero que je veux atteindre est 5. Donc je verifie si mon numero du jours est inferieur a 5 oui alors je soustrait le numero a atteindre avec mon numero du jour et la j increment pour aller jusqu a 5.

Et lorsque j arrive a 5 je sors de ma boucle parce que c mon but.
Et la j fais Date.AddDay(NbjrRetour )
Commenter la réponse de RahSam
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 oct. 2014 à 18:41
0
Merci
Bonsoir, je ne comprends pas peux expliquer plus clairement s'il te plait?

Commenter la réponse de Whismeril
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 21/10/2014 à 18:44
0
Merci
Ah ?
Et quand sors-tu donc de ta boucle ? Je ne le vois pas autrement qu'à la fin, moi ... et donc lorsque diff est atteint... et donc ta boucle ne fait qu'ajouter diff au bout du compte (et est donc inutile !)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Commenter la réponse de ucfoutu
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- Modifié par RahSam le 21/10/2014 à 18:48
0
Merci
Oui c ca

exemple aujourd hui on est 21/10/2014 et le numero du jours est 2

Puis moi j ai dans mn base de donnee le numero du jours 5 a atteindre (c-a-d Vendredi prochain).

Donc, je veux donner la date complet du vendredi prochain.
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 oct. 2014 à 18:49
Il serait plus logique que tu stockes directement la date dans ta base de données.
Parce que dés que tu changeras de semaine ton calcul sera faux.
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 18:51
Non parce que les numeros des jours resteront les meme sauf que la date du jours se changera.
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 oct. 2014 à 19:07
Ton jour de référence c'est toujours "aujourd'hui" ou non?
Quand le jour cherché à le même numéro que le jour de référence, on reste sur la même semaine ou celle d'après?
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 19:40
Celle d'après
Commenter la réponse de RahSam
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 oct. 2014 à 20:03
0
Merci
Déjà si tu veux une date, alors il faut que ta fonction retourne une date et pas un int.
Ensuite, comme le dit Uc, ta boucle ne sert à rien.

Voici un code qui à l'air de marcher, (testé sur une semaine avec un jour de référence différent d'aujourd'hui)
    Function TrouveDate(JourRef As Int32, JourRecherche As Int32) As DateTime
        Dim ecart As Int32

        Select Case Math.Sign(JourRecherche - JourRef)
            Case -1 'le jour recherché vient avant le jour de référence dans la semaine, il sera donc la semaine suivante
                ecart = 7 - JourRef + JourRecherche

            Case 0 'le jour recherché est le même que le jour de référence
                ecart = 7

            Case 1 'le jour recherché vient aprés le jour de référence
                ecart = JourRecherche - JourRef

        End Select


        Dim Aujourdhui As DateTime = DateTime.Now.Date 'on part d'aujourd'hui pour avoir la bonne semaine
        Dim Dimanche As DateTime = Aujourdhui.AddDays(-1 * Aujourdhui.DayOfWeek) 'on cherche le dimanche précédent
        Dim DateRef As DateTime = Dimanche.AddDays(JourRef) 'on arrive à la date de référence
        Return DateRef.AddDays(ecart) 'on ajoute l'écart


    End Function

Commenter la réponse de Whismeril
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 20:40
0
Merci
J ai pas bien compris ton parameter JourRecherche.
Car moi je prends en parametre le numero du jours et le numero de jours a atteindre.
Messages postés
12267
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 novembre 2018
- 21 oct. 2014 à 20:42
ben oui celui de référence et celui que l'on recherche.....
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 21:09
Oui Merci, enfin tu m as debloqué..
Commenter la réponse de RahSam
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 21:26
0
Merci
Pour une dernier question lorsque ma fonction porte plusieur parametre et je veux tester si mes parametres sont different de vide avant d executer quel est la meilleur pratique pour valider mes parametres??
Messages postés
23286
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2018
- 21 oct. 2014 à 22:05
Bonsoir,
Il est demandé sur ce forum de ne poser QU'UNE question par discussion.
Hors...là... c'est une nouvelle question... tu devrais donc (après avoir mis en RESOLU celle-ci) ouvrir une nouvelle discussion.

Mais bon... faisons une petite exception.
Si tu veux vérifier que les paramètres de ta fonctions ne sont pas vides avant d'en lancer le code... un "simple" IF suffira.

Si tes paramètres sont de type STRING tu peux utiliser :
If (Not String.IsNullOrEmpty(Mavariable1) AND Not String.IsNullOrEmpty(Mavariable2)) Then
'....
'.. Je lance le code
else

' je ne lance pas le code

End if
Commenter la réponse de RahSam
Messages postés
12
Date d'inscription
mardi 21 octobre 2014
Dernière intervention
4 novembre 2014
- 21 oct. 2014 à 21:27
0
Merci
EN vbnet
Commenter la réponse de RahSam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.