TimeSpan.Erreur de ToString("hh:mm") [dupliquer]

Cette question a déjà une réponse ici:

Pourquoi j'ai une erreur lorsque je veux obtenir la chaîne de TimeSpan avec un format personnalisé.

DateTime.Now.TimeOfDay.ToString("hh:mm");
// Error: Input string was not in a correct format.
18
demandé sur Mohamad Shiralizadeh 2015-03-15 10:19:00

3 réponses

DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss")

Documentation

39
répondu Ravi M Patel 2015-03-15 07:29:21

selon MSDN, Time Ofday est une durée. Et dans les exemples de plage de Temps.ToString vous voyez que le : doit être échappé.

hh\: mm\: ss: 03:00: 00

Ceci est aussi expliqué sur la page Personnaliser TimeSpan Chaînes De Format

les spécificateurs de format de TimeSpan personnalisés n'incluent pas les symboles de séparateur de placeholder, tels que les symboles qui séparent les jours des heures, les heures des minutes, ou des secondes de fraction de seconde. Au lieu de cela, ces symboles doivent être inclus dans la chaîne de format personnalisée sous forme littérale de chaîne. Par exemple, " dd\.hh\:mm" définit une période (.) comme séparateur entre les jours et les heures, et un deux-points (:) comme séparateur entre les heures et les minutes.

alors essayez:

DateTime.Now.TimeOfDay.ToString("hh\:mm");
5
répondu Michaël Hompus 2015-03-15 07:27:01

Ne pas utiliser TimeOfDay. Directement n' ToString()DateTime.Now:

DateTime.Now.ToString("hh:mm");

TimeOfDay est un TimeSpan. Le docs l'indique clairement à propos de TimeSpan.ToString(string format) surcharge:

le paramètre format peut être n'importe quel standard valide ou spécificateur de format personnalisé pour les valeurs de TimeSpan. Si le format est égal à String.Vide ou est null, la valeur de retour de l'objet TimeSpan courant est formatée avec le spécificateur de format commun ("c"). Si le format est une autre valeur, la méthode lance un FormatException.

Si vous devez le faire en utilisant un TimeSpan variable, vous pouvez simplement l'ajouter à un DateTime variable dont la partie temps est réglée à zéro, puis utilise sa ToString():

DateTime.Today.Add(YourTimeSpanVariable).ToString("hh:mm");
0
répondu dotNET 2015-03-15 07:26:59