TimeSpan.Erreur de ToString("hh:mm") [dupliquer]
Cette question a déjà une réponse ici:
- pourquoi DateTime.Maintenant.TimeOfDay.ToString ("HH: mm:SS.ffffff") lancer FormatException? 2 réponses
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.
3 réponses
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");
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");