Calculer le nombre de jour entre deux dates. [Résolu]

Signaler
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour,
Je cherche aujourd'hui comment calculer la différence entre deux dates.
Le 11/06/07 (par exemple) et la date actuelle. (DateTime)

J'ai trouvé ceci :
public
intGetDaysBetweenDates
(DateTimed1
, DateTimed2)
{
   return((
TimeSpan)(d2 - d1)).Days;

}

Mais j'aimerais comment savoir faire pour l'integrer au contexte de mon code :

 {
session.send("Là je veux inscrire le nombre de jour");
 }

Merci d'avance.
A voir également:

16 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Il manque des espaces ! (DateTime d1 et DateTime d2, là ou j'ai mis en gras)

Mx
MVP C# 
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Un simple

session.send(GetDaysBetweenDates(d1,d2).ToString());




devrait faire l'affaire ?

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Et par quelle forme je remplace ma D1 ? (Je débute vraiment en c#)
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
d1 et d2 sont les deux dates :

DateTime d1 = new DateTime(2000,01,01);
DateTime d2 = DateTime.Today;
session.send(GetDaysBetweenDates(d1,d2).ToString());

Te donneras le nombre de jour entre le 1er janvier 2000 et aujourd'hui.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
              {
          DateTime d1 = new DateTime(2007,07,11); // naissance le 11/07/2007
          DateTime d2 = DateTime.Today;
          session.send("J'ai " + GetDaysBetweenDates(d1,d2).ToString() + " jours.");
                }

Me renvoie l'erreur : The name GetDaysBetweenDates does not exist in the class 'My Handler'
Merci d'avance.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Alors, déclare ta méthode

public static int GetDaysBetweenDates

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
           // 4.7 - Age du robot.

                              else if
                (
                   msg.IndexOf("takelage...enfinbref") > -1
                )
                
                {
          public static int GetDaysBetweenDate
          DateTime d1 = new DateTime(2007,07,11); // naissance le 11/07/2007
          DateTime d2 = DateTime.Today;
          session.send("J'ai " + GetDaysBetweenDates(d1,d2).ToString() + " jours.");
                }

Euh, je ne vois pas trop où le déclarer car je débute et je n'est jamais déclarer des "méthodes" ...
Ce que j'ai fais là ne marche pas et me donne encore plus d'erreurs.
Je te remercie de ta patience.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
A l'extérieur de ta méthode actuelle, comme tu me l'as montré dans ton premier message

public class Robot
{
   public static int GetDaysBetweenDates(
DateTime
d1
, DateTime
d2)
{
   return
((
TimeSpan
)(d2 - d1)).Days;

}

public taMethode()
{
// Bout de code repris de juste en dessus
                              else if
                (
                   msg.IndexOf("takelage...enfinbref") > -1
                )
                
                {
          public static int GetDaysBetweenDate
          DateTime d1 = new DateTime(2007,07,11); // naissance le 11/07/2007
          DateTime d2 = DateTime.Today;
          session.send("J'ai " + GetDaysBetweenDates(d1,d2).ToString() + " jours.");
                }
}

}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Je m'arrache les cheveux, car je suis parti d'un petit code de base et je ne comprends pas toute la structure, ça fait :



-----------------------------------------------

class MyHandler : IRobotHandler
{

        public void sessionOpened(IRobotSession session, int OpenMode)
        {
        Console.Out.WriteLine(session.getUser().getID()+" arrive...");
        }

        public void sessionClosed(IRobotSession session)
        {
        Console.Out.WriteLine(session.getUser().getID()+" s'en va...");
        }

        public void messageReceived(IRobotSession session, IRobotMessage message)
        {
       
        if
                (
                   msg.IndexOf("takelage...enfinbref") > -1
                )
                
                {
          public static int GetDaysBetweenDate
          DateTime d1 = new DateTime(2007,07,11); // naissance le 11/07/2007
          DateTime d2 = DateTime.Today;
          session.send("J'ai " + GetDaysBetweenDates(d1,d2).ToString() + " jours.");
                }
        }

--------------------------------

Avec un plus grand bout de la sctructure, tu pourrais me redire où je dois déclarer la méthode.
Merci.
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Pour l'info, je travaille avec les .net Framework 1.1, si ça peut changer quelque chose.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Une méthode, comme par exemple sessionOpened, sessionClosed, ou encore messageReceived doit être déclaré dans une classe.
Donc tu peux déclarer cette méthode dans la classe MyHandler.

Maintenant que j'ai vu un peu plus de ton code, je vois que tu n'es pas besoin du mot clef static.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Ok.
Par contre je déclare ça au dessus de la mèthode pour la reception des messages !

public int GetDaysBetweenDates(DateTimed1, DateTimed2)
               {
               return((TimeSpan)(d2 - d1)).Days;
               }

Et j'ai une erreur "Identifier Exepted" à la ligne :
public int GetDaysBetweenDates(DateTimed1, DateTimed2)
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Je pense qu'il va falloir que tu te trouves un bon livre ou un bon tuto !
Petite aide : regarde un peu tes parametres dans la déclaration de ta méthode.

Mx
MVP C# 
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
C'est les paramètres qu'on m'a dit de mettre.
Mais c'est pas une mauvais idée, je vais surement acheter un bouquin, en attendant, j'aimerais bien finir ce petit bout de code.
Messages postés
59
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
21 août 2007
7
Oups. Merci bien ça fonctionne à merveille, le robot sais dire son âge !
Si vous voulez tester le joujou : robeauf@hotmail.fr (un bot msn pas très gentil)

PS : Dernière petite question, d1 et d2, j'aurais pu l'est remplacé par n'importe quoi d'autre j'imagine ?

Encore merci à vous deux.
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Ouioui, ce ne sont que des noms pour identifier tes variables

Mx
MVP C#