valid - string to datetime c#
DateTime.ParseExact FormatException String no se reconoció como un DateTime válido (2)
Estoy completamente perplejo en este caso. Por lo que puedo ver, la documentación y otras publicaciones sobre SO que he leído dicen que esto debería funcionar. Debo extrañar algo tonto, pero simplemente no puedo verlo.
Obtengo una FormatException con el mensaje "La cadena no fue reconocida como un DateTime válido". en la siguiente línea de código:
return DateTime.ParseExact(value, DateFormat, null,
DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
-
value
es"11/04/2013"
-
DateFormat
es"dd/MM/yyyy"
- La cultura actual es
en-GB
- He intentado varias variantes de
DateTimeStyles
pero sin ningún efecto.
Mi intención original era para el formato ddd, dd/MMM/yyyy
pero eso tampoco funcionaba (el valor en esa instancia era Tue, 30/Apr/2013
)
También intenté forzar la cultura a en-GB al pasar el new CultureInfo("en-GB")
lugar del null
También extraje el código en su propia aplicación de consola para ver si había algo diferente sobre el entorno (ASP.NET MVC 3)
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var DateFormat = "dd/MM/yyyy";
var value = "30/04/2013";
var culture = new CultureInfo("en-GB");
var result = DateTime.ParseExact(value, DateFormat, culture,
DateTimeStyles.AllowWhiteSpaces | DateTimeStyles.AssumeUniversal);
Console.WriteLine("/"{0}/" as /"{1}/" ==> {2}", value, DateFormat, result);
Console.ReadKey();
}
}
}
Y eso todavía me da el mismo error.
Esto funciona
string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh:mm:ss:tt",
CultureInfo.InvariantCulture)
string myDate = "30-12-1899 07:50:00:AM";
DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy HH:mm:ss:tt",
CultureInfo.InvariantCulture);
Tenga en cuenta el uso de HH (reloj de 24 horas) en lugar de hh (reloj de 12 horas) y el uso de InvariantCulture porque algunas culturas usan separadores que no sean barras.
Por ejemplo, si el cultivo es de-DE, el formato "dd / MM / aaaa" esperaría un período como separador (31.01.2011).