190 votes

Comment puis-je String.Format un objet TimeSpan avec un format personnalisé dans .NET ?

Ce qui est la méthode recommandée de mise en forme `` des objets dans une chaîne avec un format personnalisé ?

261voto

Doctor Jones Points 11502

Veuillez noter: cette réponse est pour .Net 4.0 et ci-dessus. Si vous souhaitez formater une plage de Temps .Net 3.5 ou ci-dessous, veuillez voir JohannesH de réponse.

Personnalisé TimeSpan chaînes de format ont été introduits dans .Net 4.0. Vous pouvez trouver la référence complète de la disposition des spécificateurs de format à la MSDN Personnalisé TimeSpan Chaînes de Format de page.

Voici un exemple timespan chaîne de format:

string.Format("{0:hh\\:mm\\:ss}", myTimeSpan); //example output 15:36:15

Vous avez besoin d'échapper le caractère ":" avec un "\" (qui elle-même doit être échappé, sauf si vous utilisez un compte de chaîne).

Cet extrait de la MSDN Personnalisé TimeSpan Chaînes de Format de page explique au sujet d'échapper à l' ":" et "." caractères dans une chaîne de format:

La coutume TimeSpan les spécificateurs de format ne comprennent pas l'espace réservé séparateur de symboles, tels que les symboles qui séparent les jours de heures de, heures de minutes, voire quelques secondes, à partir de fractions de secondes. Au lieu de cela, ces symboles doivent être inclus dans la chaîne de format personnalisée comme des littéraux de chaîne. Par exemple, "dd.hh\:mm" définit un point (.) comme séparateur entre les jours et les heures, et un deux-points (:) comme séparateur entre les heures et les minutes.

93voto

JohannesH Points 3817

Pour .NET 3.5 et versions ultérieures, vous pouvez utiliser:

 string.Format ("{0:00}:{1:00}:{2:00}", 
               (int)myTimeSpan.TotalHours, 
                    myTimeSpan.Minutes, 
                    myTimeSpan.Seconds);
 

Code tiré d'une réponse de Jon Skeet sur les octets

Pour .NET 4.0 et supérieur, consultez la réponse DoctaJonez.

31voto

Hosam Aly Points 14797

L'une des méthodes consiste à créer un objet DateTime et à l'utiliser pour le formatage:

 new DateTime(myTimeSpan.Ticks).ToString(myCustomFormat)

// or using String.Format:
String.Format("{0:HHmmss}", new DateTime(myTimeSpan.Ticks))
 

C'est comme ça que je sais. J'espère que quelqu'un peut suggérer une meilleure façon.

10voto

KKK Points 81

Simple. Utilisez TimeSpan.ToString avec c, g ou G. Plus d'informations sur http://msdn.microsoft.com/en-us/library/ee372286.aspx

5voto

Harpal Points 41

C'est génial:

 string.Format ("{0:00}:{1:00}:{2:00}",
               myTimeSpan.TotalHours,
               myTimeSpan.Minutes,
               myTimeSpan.Seconds);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X