2009-06-12 7 views
19

Pour le code suivant, je m'attendrais résultat pour égaler 2, parce que le MSDN indique que 'd' "Représente le jour du mois comme un nombre de 1 à travers 31. Un jour à un chiffre est mis en forme sans zéro. ".Format .NET DateTime "Day" sans zéro principal

DateTime myDate = new DateTime(2009, 6, 4); 
string result = myDate.ToString("d"); 

Cependant, résultat est en fait égal à '6/4/2009' - qui est le format court la date (qui est aussi 'd'). Je pourrais utiliser 'dd', mais cela ajoute un zéro, ce que je ne veux pas.

Répondre

38

Pour indiquer qu'il s'agit d'un spécificateur de format personnalisé (contrairement à un spécificateur de format standard), il doit comporter deux caractères. Ceci peut être accompli en ajoutant un espace (qui apparaîtra dans la sortie), ou en incluant un signe pour cent avant la lettre unique, comme ceci:

string result = myDate.ToString("%d"); 

MSDN

5

Plutôt que d'utiliser le formatage de chaînes chaînes , comment sur l'utilisation de la propriété Day

DateTime myDate = new DateTime(2009,6,4) 
int result = myDate.Day; 

Ou si vous avez vraiment besoin le résultat sous forme de chaîne

string result = myDate.Day.ToString(); 

Si vous cherchez à obtenir une partie de date spécifique à partir d'un objet date plutôt qu'une représentation formatée de la date, je préfère utiliser les propriétés (Jour, Mois, Année, Jour de la semaine, etc.) Il fait lire le code un peu plus facile (en particulier si quelqu'un d'autre le lit/conserve sans avoir mémorisé les différents codes de formatage)

+0

Merci, vous faites un bon point. Malheureusement, dans mon cas, aujourd'hui, j'avais besoin de mettre la chaîne de format dans une feuille de propriétés dans le cadre d'une mise en page de rapport - donc j'ai dû utiliser la valeur% d. –

Questions connexes