IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Obtenir le nombre de secondes (et ms) à partir de deux DateTime ?


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut Obtenir le nombre de secondes (et ms) à partir de deux DateTime ?
    Bonjour à tous,

    Je réalise un jeu qui sera chronométré et j'ai besoin de récupérer le temps entre l'affichage de la page et le moment où il cliquera sur le bouton "Valider". Pour ce faire j'ai deux variables DateTime (un start et une stop).

    Comment faire pour récupérer quelque chose du genre :
    "Vous avez mis 156 secondes et 350 millièmes" ?

    J'ai essayé avec DT_STOP.Substract(DT_START); Et en récupérant le TotalSeconds du TimeSpan retourné mais, j'obtiens une valeur énorme (double). Je ne vois pas comment l'exploiter ..

    Merci à vous !

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    tu n'as pas une methode static dans la classe DateTime pour le faire?

  3. #3
    Membre confirmé
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    C'est à dire ?
    Je ne crois pas.
    La solution c'est d'utiliser les propriétés Seconds et TotalSeconds.

    Seconds ca m'est pas utile car si le joueur met 3 minutes et 15 secondes je n'aurais que les 15 secondes DONC je souhaite utiliser TotalSeconds. Mais là, j'ai une valeur double énorme (> 6000 en général).

    Comment la convertir en un INT de secondes ?

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Si t'es en 2.0, y a une classe spéciale pour ça:

    C'est du (VB.NET)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                Dim monStopWatch As Stopwatch = New Stopwatch
                monStopWatch.Start()
     
                ...
     
                monStopWatch.Stop()
                Dim tempsExecution As Long
                tempsExecution = monStopWatch.ElapsedMilliseconds

  5. #5
    Membre confirmé
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    J'ai trouvé le problème, rien à voir avec les DateTime.
    En fait, au OnInit de la page, je mets ma variable DT_START = DateTime.Now puis j'affiche mon jeu et quand le joueur clique sur le boutton Valider, ca fait un postback qui remet à 0 le DT_START or j'ai bien fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
     
            if (!IsPostBack)
            {
                this.DT_START = DateTime.Now;
                Literal1.Text += DT_START.ToLongTimeString() + " (début)<br>";
                Response.Write(DT_START.ToString());
            }
            else
            {
                Response.Write(DT_START.ToString());
            }
    }
    Je comprends pas le problème car normalement ca devrait garder le DS_START en valeur mais apparemment, non ... :/

    PS : par contre le literal garde bien sa valeur lors du postback.

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca peut pas marcher ce que tu fais.
    Quand tu cliques sur le bouton, ça instancie une nouvelle classe donc ton DT_START n'a plus de valeur.
    Faut que tu stockes ça qq part (session ou viewstate par exemple)

  7. #7
    Membre confirmé
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    Le problème avec les sessions c'est que si je mets en nom de variable Session["JEU_DATE_START"] = DateTime.Now, si il fait un autre jeu sur une autre page ca va écraser la valeur déjà existante.

    Le problème peut-être résolu grace au ViewState ou pas ?!

    Merci à vous !

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Danny Blue Voir le message
    Le problème avec les sessions c'est que si je mets en nom de variable Session["JEU_DATE_START"] = DateTime.Now, si il fait un autre jeu sur une autre page ca va écraser la valeur déjà existante.

    Le problème peut-être résolu grace au ViewState ou pas ?!

    Merci à vous !
    oui, le viewstate est propre à la page

  9. #9
    Membre confirmé
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    Merci, bon et bien je vais regarder du côté du viewstate alors. Même si là je viens de tenter (sans doc ni rien) et ca ne sauvegarde pas bien mais bon là je vais pas demander du secours avant de chercher

    Merci beaucoup !

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/06/2014, 11h38
  2. Réponses: 5
    Dernier message: 26/05/2009, 17h54
  3. Obtenir un nombre aléatoire à partir d'un nombre référence ?
    Par supergrey dans le forum Mathématiques
    Réponses: 10
    Dernier message: 08/11/2008, 18h47
  4. Réponses: 4
    Dernier message: 05/05/2006, 20h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo