2009-01-20 11 views
20

J'ai cette fonction ...zéro Format de date C#

private string dateConvert(string datDate) 
{ 
     System.Globalization.CultureInfo cultEnGb = new System.Globalization.CultureInfo("en-GB"); 
     System.Globalization.CultureInfo cultEnUs = new System.Globalization.CultureInfo("en-US"); 

     DateTime dtGb = Convert.ToDateTime(datDate, cultEnGb.DateTimeFormat); 
     datDate = dtGb.ToString(cultEnUs.DateTimeFormat.ShortDatePattern); 

     return datDate; 
} 

Mais je veux avec le zéro encore des chiffres inférieurs (1-9) de sorte que la date est 11-09-2009 (mm -dd-yyyy) ...

Maintenant, si je ne le convertissais pas, utilisez string.Format ("{0: d}", dateVar) comment faire cela dans la conversion?

***** ***** Solution

utilisé une version légèrement modifiée de la réponse ci-dessous (à savoir celui qui rendrait).

Convert.ToDateTime(datDate).ToString("MM-dd-yyyy"); 
+1

Pour poser la question idiote, est-il une raison que vous n'êtes pas l'analyse de cette puis le garder comme une valeur de date jusqu'à ce que vous devez présenter à l'utilisateur? –

+1

Son pour produire un lien profond, répondant aux exigences de l'application tierce que nous utilisons. Cela fait partie d'un script plus grand pour faciliter le lien entre les partenaires. Société anglaise, développeurs indiens, format de date américain. Allez comprendre. –

Répondre

42
return dateTimeValue.ToString("MM-dd-yyyy"); 
+2

D'accord - de http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring(VS.85).aspx le ShortDatePattern de EN-US est "M/j/aaaa", qui va couper zéros en tête et utilisez "/" comme séparateur non "-". –

+0

@Zhaph: la date est réparée et transmise dans l'URL de sorte que la séparation soit nécessaire. –

+1

Cela ne fonctionnait pas pour mes besoins (en entier) mais en le modifiant pour ... Convert.ToDateTime (datDate) .ToString ("MM-jj-aaaa"); travaillé un régal. Merci –

2

Tu ne peux pas utiliser le string.Format après que vous avez fait la conversion?

-à-dire return string.Format("{0:d}", datDate);

+0

C'est ce que j'ai deviné mais en entrant 20-03-2009 produit 20-20-2009 –

+0

Ouais, ne sais pas ce que je pensais, la réponse de Mehrdad est celle qui devrait fonctionner –