yyyy validar tryparseexact example convert c# .net cultureinfo

c# - validar - datetime tryparse dd mm yyyy



DateTime.TryParseExact() rechaza formatos vĂ¡lidos (5)

Aquí puedes verificar un par de cosas.

  1. 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 .
  2. CultureInfo.InvariantCulture que es más probable que agregue problema. Entonces, en lugar de pasar un valor NULL o configurarlo en CultureInfo 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)