Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

331
Views
¿Por qué DateTime.TryParse ve "1,5" como válido (y cómo prevenirlo)?

Al intentar validar la entrada del usuario, una cadena de entrada de "1,5" da como resultado una fecha válida:

 var s = "1,5"; DateTime d; var b = DateTime.TryParse(s, CultureInfo.InvariantCulture, DateTimeStyles.None, out d); Console.WriteLine("s: " + s); Console.WriteLine("b: " + b); Console.WriteLine("d: " + d);

La salida es:

 s: 1,5 b: True d: 1/5/2021 12:00:00 AM

Violín .NET

Mi intención era que "1,5" no se considere como un DateTime válido. Obviamente, estoy equivocado.

Probé esto tanto en .NET Framework 4.8 como en .NET Core 5 con los mismos resultados.

Después de revisar las fuentes .NET del método DateTime.TryParse , todavía no puedo entender por qué se considera una fecha válida.

Además, me encantaría evitar de alguna manera que el método reconozca esto como una fecha válida. Mi conjetura es ir con DateTime.TryParseExact pero tal vez haya mejores opciones.

Mis preguntas

  1. ¿Por qué DateTime.TryParse en cultura invariable considera "1,5" como una fecha válida?
  2. ¿Cómo prevenir este comportamiento?
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Lo está analizando como "Mes, Día" en el año actual, por eso lo permite.

DateTime.TryParse() es notoriamente permisivo: el consejo generalmente es usar DayTime.TryParseExact() para evitar tales cosas (como usted mismo sugiere).

No hay mejor manera de resolver esto que usar DateTime.TryParseExact() .

Este comportamiento está realmente documentado :

Este método intenta ignorar los datos no reconocidos, si es posible, y completa la información faltante del mes, día y año con la fecha actual. Si s contiene solo una fecha y ninguna hora, este método asume que la hora es a las 12:00 de la noche.

Por lo tanto, analiza el mes y el número de día, y luego establece el año en el año de la fecha actual y la hora en la medianoche.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!