2010-10-26 4 views
14

Im en utilisant un service web qui a besoin d'un datetime dans le format suivant « 2010-12-24 »analyse d'une chaîne au format « année mois jour » en C#

J'ai la chaîne à analyser dans le même " façon "mais comme dit, c'est une chaîne.

string myDate = "2010-12-24"; 

Comment puis-je l'analyser pour qu'il reçoive le même format?

ont essayé d'utiliser: DateTime.Parse(mystring);

mais cela me donne un format séparé du côlon.

+0

Dans quel format est la chaîne que vous devez convertir * de *? –

+0

Le même format: "2010-10-24" – matskn

Répondre

29

Utilisez DateTime.ParseExact, fournissant un custom format string:

DateTime.ParseExact(mystring, "yyyy-MM-dd", CultureInfo.InvariantCulture) 

Cela lèvera une exception si la chaîne d'entrée ne peut pas être analysée - vous pouvez utiliser DateTime.TryParseExact qui retournera vrai en cas de succès.

+0

Quelles sont les raisons pour lesquelles il ne peut pas être analysé? – matskn

+0

@matskn - si la chaîne transmise n'est pas une date 'myString =" abcdsd "'. – Oded

+0

Si le format fourni ne peut pas être appliqué sur la chaîne –

3

DateTime time = DateTime.Now;
string format = "yyyy-M-d";
Console.WriteLine(time.ToString(format));

+2

ou "aaaa-MM-jj" si votre chaîne peut contenir des zéros de fin. – PVitt

5

Vous pouvez utiliser

ToString(formatString) 

Par exemple: - dateTimeObj.ToString("yyyy-MM-dd"); Où dateTimeObj est votre objet DateTime

+0

Vous montrez la surcharge qui utilise un 'FormatProvider' et suggère d'utiliser celui qui utilise une' chaîne'. Ce sont deux surcharges _différentes. – Oded

+0

@Oded - Désolé, mon erreur. Je ne voulais pas dire objet FormatProvider là. Je voulais juste que ce soit une chaîne de format. –

2

La façon la plus efficace est d'utiliser DateTime.TryParseExact():

DateTime result; 
if (DateTime.TryParseExact(input, "yyyy-MM-dd", CultureInfo.CurrentCulture, DateTimeStyles.None, out result)) 
{ 
    // use result 
} 
1

Essayez ceci:

date.ToString("yyyy-MM-dd"); 
Questions connexes