2010-03-14 14 views
10

Quiero convertir un valor de 8 dígitos en un objeto DateTime. ¿Cómo puedo hacer esto? Por ejemplo, si un usuario ingresa 08082010, debe convertirlo a 08/08/2010, usando C#.Conversión de un número de 8 dígitos a DateTime Tipo

+3

Lo que más acerca de esta pregunta como es el uso del 8 de agosto, lo que enmascara el hecho de que es ambigua si nos referimos MM/dd/aaaa frente dd/mm/aaaa –

Respuesta

11
CultureInfo provider = CultureInfo.InvariantCulture; 
string dateString = "08082010"; 
string format = "MMddyyyy"; 
DateTime result = DateTime.ParseExact(dateString, format, provider); 

Esto funcionará.

+0

¿qué pasa con el Proveedor? –

+0

Agregado el CultureInfo ... – Jason

0
+0

He tratado todo el métodos como Parse y TryParse de DateTime pero no funcionó para mí, es por eso que he hecho la pregunta aquí. –

+0

Esto no funcionará, porque "08082010" no es un formato de fecha aceptable para DateTime.Parse. Utilice ** DateTime.ParseExact ** ** o ** DateTime.TryParseExact ** (según sus necesidades). – ScottK

6

Uso DateTime.ParseExact() con un especificador de formato de "ddMMyyyy" o "MMddyyyy".

5

Solo intentaba hacer lo mismo, y tenía que estar de acuerdo con el enfoque de Ignacio. La respuesta que se aceptó funciona pero el método ParseExact arroja una excepción en el caso de que la cadena de fecha no sea válida, mientras que el método TryParseExact simplemente devolverá false. Ejemplo:

using System.Globalization; 
// ... 
string dateString = "12212010"; 
string format = "MMddyyyy"; 
DateTime dateStarted; 
if (!DateTime.TryParseExact(dateString, format, null, DateTimeStyles.None, out dateStarted)) 
    dateStarted = DateTime.Now; 
Cuestiones relacionadas