Convertir une durée

Résolu
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008 - 15 sept. 2007 à 14:02
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008 - 16 sept. 2007 à 10:58
Bonjour tout le monde,

Alors voila, suite à mon problème précédent qui était de récupérer la durée d'un mp3, j'ai donc fait quelque recherche et j'ai trouvé la classe AudioVideoPlayBack que j'ai inclus à mon projet et j'ai donc fait un projet de test avant de le mettre dans le "vrai" projet

J'ai donc ce code :

{
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                Audio mp3 = new Audio(openFileDialog1.FileName);

                label1.Text = mp3.Duration.ToString();
            }
        }

Mais la je récupère la durée en seconde et je voudrais pouvoir la récupérer sous 00:00:00 ( heure, minute, seconde ) mais je ne sais pas comment faire pour obtenir cette forme de format...

Merci bien

32 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 15:57
Sur l'instance de TimeSpan, appelée "file" dans ton exemple

Bon :

if (openFileDialog1.ShowDialog() = = DialogResult.OK)
            {
                Audio mp3 = new Audio(openFileDialog1.FileName);
               TimeSpan duree = TimeSpane.FormSeconds(mp3.Duration);
                label1.Text = duree.ToString();
            }

/*
coq
MVP Visual C#
CoqBlog
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 sept. 2007 à 10:33
L'appel de ToString sur une chaîne de caractères ne sert à rien.
Et je n'avais pas vu au premier coup, mais ta chaine de formatage ne veut rien dire, tu utilises 3 fois le nombre d'heures :

"{0:00}:{<strike>00</strike>:00}:{<strike>00</strike>:00}" => {0:00}:{1:00}:{2:00}

/*
coq
MVP Visual C#
CoqBlog
*/
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 14:56
Salut,

Regarde du côté de la structure TimeSpan.

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 15:28
Merci de ta réponse, j'ai fait des recherches mais je ne trouve pas comment faire pour avoir l'affichage en heure:minutes: secondes...
0

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

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 15:32
Avec ToString.

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 15:35
Je crois que j'ai tout faux en fesant cela :

TimeSpan file = new TimeSpan();               
 label1.Text = file.TotalMinutes.ToString();

Je ne déclare pas le fileName en plus...
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 15:41
Oui, sur l'instance de TimeSpan, pas sur le Double retourné par la propriété TotalMinutes          
 label1.Text = file.ToString();

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 15:46
Je ne vois pas se que tu veux dire par l'instance dans le TimeSpan...
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 15:56
Je fais ça :

TimeSpan file = new TimeSpan();               
 label1.Text = file.ToString();

Je récupère 00:00:00 dans mon label...en même temps sa paraît logique car je ne dis pas d'ouvrir le nom du fichier ouvert...
je ne sais pas comment faire
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 15:59
TimeSpan n'a rien à voir avec les fichiers ou quelleconque autre opération d'I/O, il s'agit d'une structure dédiée à la manipulation de durée, comme le dit sa description : "Représente un intervalle de temps."

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 16:03
Merci, ca marche impec :)
Par contre le souci c'est que je récupère 00:03:34.070000 dans mon label comment je pourrais récupérer juste 00:03:34 ?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 16:09
Dans ce cas au lieu de TimeSpan.ToString sert toi des propriétés te donnant les différents éléments de temps pour former une chaîne de caractères à ta guise, avec String.Format par exemple.

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 16:19
Merci de ton aide ^^
Il faut chercher dans les custom ou général ?

PS : et par la suite j'aimerai ajouter la durée dans la listView, est ce que cela sera compliqué ?

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {              
              string[] files = openFileDialog.FileNames; // la tu récupère tous les noms de fichier dans un tableau             
              foreach(string file in files) // tu parcoure 1 à 1 les fichiers trouvés
               {
                FileInfo fi = new FileInfo(file);
                ListViewItem item = new ListViewItem(fi.Name);
                double size = fi.Length / 1024;
                item.SubItems.Add(size.ToString() + " Ko"); // il faut un string en paramètre
                Audio mp3 = new Audio(openFileDialog.FileName);
                TimeSpan duree = TimeSpan.FromSeconds(mp3.Duration);
                item.SubItems.Add(duree.ToString());
                listView.Items.Add(item);         
              }
            }
Car sur cette ligne la : ( j'ai un problème avec openFileDialog.FileName, j'ai mi fi mais pareil )
Audio mp3 = new Audio(openFileDialog.FileName);
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 16:29
file ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 16:31
Non marche pas avec file,j'ai cette erreur

La DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' tente une exécution managée dans le verrou du chargeur du système d'exploitation. N'essayez pas d'exécuter du code managé dans une fonction d'initialisation d'image ou DllMain, car cela risque d'entraîner un blocage de l'application.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 16:40
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 17:20
Comprend pas tout...mais je vois qu'il faut faire CTRL+D et apres E mais ensuite...erf
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 17:23
C'est un problème signalé par un assistant de debuggage de Visual Studio 2005 lorsque on utilise une librairie DirectX Managé .NET 1.1 dans un programme .NET 2.0.

/*
coq
MVP Visual C#
CoqBlog
*/
0
sliverman Messages postés 83 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 8 juillet 2008
15 sept. 2007 à 17:24
Ah ok, et on peut l'utiliser quand même ?

PS : merci pour la rapidité de tes posts :)
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 sept. 2007 à 17:27
Logiquement oui, bien que je n'ai pas d'idée réelle des conséquences, ne connaissant pas le sujet plus que ça.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous