c# - validar - datetime tryparse dd mm yyyy
DateTime.TryParseExact() rechaza formatos vĂ¡lidos (5)
Aquí puedes verificar un par de cosas.
- Formatos de fecha que está utilizando correctamente. Puede proporcionar más de un formato para
DateTime.TryParseExact
. Consulte la lista completa de formatos, disponible here . CultureInfo.InvariantCulture
que es más probable que agregue problema. Entonces, en lugar de pasar un valorNULL
o configurarlo enCultureInfo provider = new CultureInfo("en-US")
, puede escribirlo como. .if (!DateTime.TryParseExact(txtStartDate.Text, formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out startDate)) { //your condition fail code goes here return false; } else { //success code }
Estoy analizando un valor de DateTime en una página ASP.NET WebForms
y la cadena de fecha sigue siendo rechazada por el método DateTime.TryParseExact()
aunque coincide claramente con una de las cadenas de formato proporcionadas.
Parece que falla en mi máquina de desarrollo en el hogar pero funciona en el servidor de producción, así que estoy pensando en la configuración de fechas locales, pero este error ocurre incluso cuando proporciono un objeto IFormatProvider (CultureInfo)
como parámetro
Aquí está el código:
DateTime startDate;
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
var errStart = row.FindControl("errStartDate"); //my date format error message
if (!DateTime.TryParseExact(txtStartDate.Text, formats, null, DateTimeStyles.None, out startDate))
{
errStart.Visible = true; //we get here even with a string like "20/08/2012"
return false;
}
else
{
errStart.Visible = false;
}
Tenga en cuenta que estoy dando un null FormatProvider
en el anterior, pero el mismo problema ocurre cuando proporciono un objeto CultureInfo
como (CultureInfo provider = new CultureInfo("en-US"))
para este parámetro.
¿Qué me estoy perdiendo?
Este es el método simple, use ParseExact
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result;
dateString = "Sun 08 Jun 2013 8:30 AM -06:00";
format = "ddd dd MMM yyyy h:mm tt zzz";
result = DateTime.ParseExact(dateString, format, provider);
Esto debería funcionar para ti.
Pruebe C # 7.0
var Dob= DateTime.TryParseExact(s: YourDateString,format: "yyyyMMdd",provider: null,style: 0,out var dt)
? dt : DateTime.Parse("1800-01-01");
Tratar:
DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate)
string DemoLimit = "02/28/2018";
string pattern = "MM/dd/yyyy";
CultureInfo enUS = new CultureInfo("en-US");
DateTime.TryParseExact(DemoLimit, pattern, enUS,
DateTimeStyles.AdjustToUniversal, out datelimit);
Para obtener más https://msdn.microsoft.com/en-us/library/ms131044(v=vs.110).aspx