Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

344
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda