2009-02-01 9 views
16

Comment puis-je formater une date comme dd/mm/yyyy ou mm/dd/yy?format date dans C#

Comme dans VB format("dd/mm/yy",now)

Comment puis-je faire cela en C#?

Répondre

44

Il est presque la même chose, il suffit d'utiliser la méthode DateTime.ToString(), par exemple:

DateTime.Now.ToString("dd/MM/yy"); 

Ou:

DateTime dt = GetDate(); // GetDate() returns some date 
dt.ToString("dd/MM/yy"); 

En outre, vous voudrez peut-être envisager d'utiliser l'un des formats de date/heure prédéfinis , par exemple:

DateTime.Now.ToString("g"); 
// returns "02/01/2009 9:07 PM" for en-US 
// or "01.02.2009 21:07" for de-CH 

Ceux-ci assurent que le format sera correct, indépendamment du paramètres régionaux actuels.

Vérifiez les pages suivantes MSDN pour plus d'informations


Quelques informations complémentaires connexes:

Si vous souhaitez afficher une date dans un lieu/culture spécifique, alors il y a une surcharge de la méthode ToString() qui prend un IFormatProvider:

DateTime dt = GetDate(); 
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM" 
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39" 

Ou bien, vous pouvez régler le CultureInfo du thread courant avant au formatage d'une date:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
dt.ToString("g"); // returns "5/26/2009 10:39 PM" 

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH"); 
dt.ToString("g"); // returns "26.05.2009 22:39" 
+2

devrait être des lettres majuscules mM pour le mois, mm signifie minutes ... –

+2

I encourager vous suivez les conseils de Martin et suivez les codes prédéfinis, qui sont sensibles à la culture. Vous n'en aurez peut-être pas besoin maintenant, mais dans l'avenir, cela pourrait faciliter les choses. –

+0

+1 pour les formats prédéfinis –

8
string.Format("{0:dd/MM/yyyy}", DateTime.Now) 

Cherchez "les chaînes de format" sur MSDN pour voir toutes les options de formatage.

Utilisez yy, yyyy, M, MM, MMM, MMMM, d, dd, ddd, dddd pour la composante date

utilisation h, hh, H, HH, m, mm, s, ss pour la composante temps de jour

+0

Voici le lien MSDN. Cela pourrait aider les autres. https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx – Sai

2

Essayez ceci:

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009 
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009 
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009 
+0

Cet exemple en appellera à son tour Date.toString (format string), comme indiqué ci-dessous dans la réponse de Martin. C'est un moyen plus simple et plus direct que de passer par String.Format. – abelenky

+0

oui, vous avez raison, la réponse de Martin est la directe, merci. – Canavar

2

En vous pouvez également écrire

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString(); 

pour une courte notation

ou

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString(); 

pour une notation à long comme "dimanche, 1 Fevrier 2009".

Ou jeter un oeil à MSDN pour les possibities de .ToString ("???");

2

Mieux encore, utilisez simplement

DateTime.Now.ToString() 

ou

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

à utiliser le format que l'utilisateur préfère.

0

J'ai rencontré le même problème. Ce que je devais faire était d'ajouter une référence en haut de la classe et de changer le CultureInfo du thread qui est en cours d'exécution.

using System.Threading; 

string cultureName = "fr-CA"; 
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName); 

DateTime theDate = new DateTime(2015, 11, 06); 
theDate.ToString("g"); 
Console.WriteLine(theDate); 

Tout ce que vous avez à faire est de changer le nom de la culture, par exemple: "en-US" = Etats-Unis "fr-FR" = langue française France "fr-CA" = français Canada parlant etc ...

0

Je pense que c'est simple que vous pouvez convertir en tout format et sans aucune confusion

DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));