252 votes

Question : Comment puis-je formater un DateTime nullable avec ToString() ?

Comment puis-je convertir le nullable DateTime dt2 une chaîne formatée ?

aucune surcharge de la méthode ToString ne prend un argument

370voto

Blake Pettersson Points 3431
<pre><code></code><p>EDIT : Comme indiqué dans d’autres commentaires, vérifiez qu’il existe une valeur non null.</p></pre>

82voto

Russ Points 3484

Essayez ceci sur la taille :

L’objet dateTime actuel vous cherchez pour mettre en forme est dans le dt. Propriété Value et pas sur le dt2 objet elle-même.

37voto

John C Points 75

Vous êtes en train d’ingénier tout cela et de le rendre plus compliqué qu’il ne l’est réellement. Ce qui est important, arrêtez d'utiliser ToString et commencez à utiliser le formatage de chaîne comme string.Format ou des méthodes qui prennent en charge le formatage de chaîne comme Console.WriteLine. Voici la solution préférée à cette question. C'est aussi le plus sûr.

 DateTime? dt1 = DateTime.Now;
DateTime? dt2 = null;

Console.WriteLine("'{0:yyyy-MM-dd hh:mm:ss}'", dt1);
Console.WriteLine("'{0:yyyy-MM-dd hh:mm:ss}'", dt2);
 

Output: (je mets des guillemets simples pour que vous puissiez voir que cela revient sous la forme d'une chaîne vide lorsque null)

 '2014-01-22 09:41:32'
''
 

31voto

David Glenn Points 12819

Comme d’autres ont indiqué que vous devez vérifier pour null avant d’appeler ToString mais ne pas répéter vous-même vous pouvez créer une méthode d’extension qui fait cela, quelque chose comme :

Qui peut être invoquée comme :

16voto

Matt Howells Points 20751

Le problème avec la formulation d'une réponse à cette question est que vous ne spécifiez pas la sortie souhaitée lorsque le datetime nullable n'a aucune valeur. Le code suivant affichera DateTime.MinValue dans ce cas, et contrairement à la réponse actuellement acceptée, ne lancera pas d'exception.

 dt2.GetValueOrDefault().ToString(format);
 

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