Calculer le nombre de jour entre deux dates.

Résolu
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 - 13 juin 2007 à 09:39
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 13 juin 2007 à 12:42
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 juin 2007 à 12:05
Il manque des espaces ! (DateTime d1 et DateTime d2, là ou j'ai mis en gras)

Mx
MVP C# 
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 10:06
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)
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 10:09
Et par quelle forme je remplace ma D1 ? (Je débute vraiment en c#)
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 10:42
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 11:06
              {
          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.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 11:08
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)
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 11:15
           // 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.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 11:23
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)
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 11:38
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.
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 11:41
Pour l'info, je travaille avec les .net Framework 1.1, si ça peut changer quelque chose.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 11:43
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)
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 11:50
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)
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 juin 2007 à 11:53
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# 
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 12:01
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.
0
madshell Messages postés 59 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 21 août 2007 7
13 juin 2007 à 12:13
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.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 juin 2007 à 12:42
Ouioui, ce ne sont que des noms pour identifier tes variables

Mx
MVP C# 
0
Rejoignez-nous