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

C# Discussion :

Format de Temps


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut Format de Temps
    Bonjour,

    J'ai besoin de formater des temps, type HH:MM:SS, HH:MM, etc.
    Dans une TextBox, facile, j'utilise la propriété Mask du TextBox.
    Pour ce qui est de la lecture. Quand on lis la propriété Text on obtient :
    HHMMSS, HHMM, etc...

    je voudrais donc utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String.Format("{0:00:00:00}", this.txtDuree.Text);
    Mais pas de chance, ça ne fonctionne pas, car le ':' n'est pas accepté dans Format, vu qu'il doit servir déjà à l'interprétation de la chaîne format et ne semble pas être accepté...
    connaissez vous une autre solution ? autre que de faire des concaténation en insérant les ":" ?

    Merci de m'aider.

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Cast txtDuree.Text en Datetime (avec un DateTime.TryParse()) puis utilise le format qui te conviens parmi ceux-ci.

  3. #3
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Date fourni déja une methode pour parser les Strings

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
           Date maDate = Date.TryParseExact(monstring,"yyyy-dd-hh");
    Les différents formats de date sont içi
    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

  4. #4
    Membre averti Avatar de emiscool
    Profil pro
    architecte logiciel
    Inscrit en
    Octobre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : architecte logiciel

    Informations forums :
    Inscription : Octobre 2006
    Messages : 45
    Par défaut
    je te propose la solution suivante:

    tu crée un objet DateTime a partir du texte via la méthode suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DateTime dt = DateTime.ParseExact("105123", "hhmmss", null);
    remplacer 105123 par le contenue dy champ Text.


    puis tu passe l'objet date dans la fonction Format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("{0:T}", dt);

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    Merci pour vos réponses.

    Jerede, par Date tu veux dire DateTime j'imagine.
    Calagan99, le Cast en DateTime d'un TextBox ne fonctionne pas.
    J'aurais put utiliser la solution décrite par emiscool, mais le Pg est que je n'ai pas une string dont le format est au format datetime justement, ce TextBox permet la saisie et je dois accepter des saisie incomplètes du genre HH:M:S ou H:MM, etc.
    c'est donc dans le TextChanged que je voulais remettre en forme et reproposer à l'utilisateur du HH:MM:SS...
    donc le ParseExact n'est pas utilisable, chaîne non reconnue...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    de façon plus simple , s'il y avait un moyen de récupérer la valeur "Maskée" du TextBox, cad HH:MM:SS plutôt que HHMMSS alors que j'ai mis un masque = 00:00:00, ça résoudrait mon problème, mais impossible...

  7. #7
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Les possibilités de saisies doivent être définies.

    Tu peux dire que tu acceptes les saisies du type HH:mm:ss, HH:mm, ... mais il faut que ce soit clairement défini.

    Ensuite tu pourras créer une méthode qui à partir d'une saisie utilisateur, tentera de la convertir en DateTime en essayant tous les formats autorisés jusqu'à trouver le bon. Si ça ne marche pour aucun, il faut inviter l'utilisateur à modifier sa saisie.

    Pour le faire DateTime.TryParse, DateTime.ParseExact marchent très bien pour tester tous tes formats en donnant les paramètres qui vont bien.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120

  9. #9
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Hello,

    sinon, tu utilises le contrôle fait pour ça, le dateTimePicker, auquel tu donnes à la propriété Format la valeur Time (puisque ce n'est que l'heure qui t'intéresse, pas le jour). Sa propriété Value est un Datetime, dont tu peux extraire la composante "heure" via la propriété "TimeOfDay", qui est un TimeSpan.

  10. #10
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Citation Envoyé par juniorAl Voir le message
    Calagan99, le Cast en DateTime d'un TextBox ne fonctionne pas.
    Oui, mais le cast de la propriété Text d'une TextBox fonctionne

    Sinon, quel est l'intérêt d'utiliser un masque de saisie sans pour autant forcer le respect de ce masque ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. changer format du temps
    Par elmagique dans le forum Solaris
    Réponses: 10
    Dernier message: 11/05/2011, 10h43
  2. Gestion du format des temps de Windows
    Par CrazySeb dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/07/2008, 16h46
  3. nombre decimal formaté en temps "daté"
    Par bladebo dans le forum Excel
    Réponses: 2
    Dernier message: 11/03/2008, 16h15
  4. Format du temps en millisecondes
    Par smail21 dans le forum Langage
    Réponses: 19
    Dernier message: 22/09/2007, 00h02
  5. Formater un temps en millisecondes
    Par TheDarkLewis dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/09/2004, 18h50

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