2010-10-26 27 views
14

Im usando un servicio web que necesita una fecha y hora en el siguiente formato "2010-12-24"analizar una cadena de "año-mes-día" formato en C#

Tengo la cadena a analizar en el mismo " manera "pero como se dijo, es una cadena.

string myDate = "2010-12-24"; 

¿Cómo puedo analizarlo para que tenga el mismo formato?

intentado usar: DateTime.Parse(mystring);

pero esto me da un formato separada por dos puntos.

+0

En qué formato es la cadena que se necesita para convertir * de *? –

+0

El mismo formato: "2010-10-24" – matskn

Respuesta

29

Uso DateTime.ParseExact, proporcionando una custom format string:

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

Esto arrojará una excepción si la cadena de entrada no se puede analizar; es posible que desee utilizar DateTime.TryParseExact, que se devolverá verdadero si es exitoso.

+0

¿Cuáles son las razones por las que no se puede analizar? – matskn

+0

@matskn - si la cadena pasada no es una fecha 'myString =" abcdsd "'. – Oded

+0

Si el formato proporcionado no se puede aplicar en la cadena –

3

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

+2

alternativamente "aaaa-MM-dd" si la cadena puede contener ceros al final. – PVitt

5

Puede utilizar

ToString(formatString) 

Por ejemplo: - ¿Dónde dateTimeObj.ToString("yyyy-MM-dd"); dateTimeObj es su objeto DateTime

+0

Está mostrando la sobrecarga que usa un 'FormatProvider' y sugiere usar la que usa una' cadena'. Estas son dos sobrecargas diferentes. – Oded

+0

@Oded - Lo siento, mi error. No quise decir el objeto FormatProvider allí. Solo quise que fuera una cadena de formato. –

2

La manera más eficaz es utilizar DateTime.TryParseExact():

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

Prueba esto:

date.ToString("yyyy-MM-dd"); 
Cuestiones relacionadas