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

236
Visualizações
¿La comparación de fecha de formato de cadena puede ser un problema en js?
  1. '2012-12-12' < '2013-11-12' // true

  2. new Date('2012-12-12') < new Date('2013-11-12') // true

Ambos producen el mismo resultado. Pero cuando busco un código de ejemplo que compara la fecha del formato de cadena, todos lo convierten al tipo de fecha. Entonces, el primer ejemplo puede ser un problema, pero no estoy seguro de cuándo puede ser un problema. Déjame saber más detalles. ¡por favor!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

'2012-12-12' < '2013-11-12' // verdadero

Compara las fechas como cadenas. Una ventaja del formato ISO 8601 es que las marcas de tiempo se comparan correctamente como cadenas siempre que el desplazamiento (si lo hay) sea el mismo. P.ej

 '2022-01-06T09:00:00+10:00' < '2022-01-06T00:00:00Z'

debería ser true , pero devuelve false , mientras que:

 new Date('2022-01-06T09:00:00+10:00') < new Date('2022-01-06T00:00:00Z')

devuelve verdadero (ver más abajo por qué). Pero comparar otros formatos de fecha como cadenas seguramente no funcionará, por ejemplo, usando el formato d/m/y:

 01/03/2020 < 01/02/2021

devuelve falso porque el "3" en "03" es mayor que el "2" en "02" y hasta ahí llega la comparación.

Entonces hay:

nueva fecha ('2012-12-12') < nueva fecha ('2013-11-12') // verdadero

que funciona porque ambas marcas de tiempo se analizan como UTC para producir un valor de tiempo (un valor numérico que es el desplazamiento de la fecha desde el 1 de enero de 1970 en milisegundos). El operador < obliga a los objetos Date a usar primitivas que, en este caso, llaman efectivamente a valueOf , que devuelve el valor de tiempo, por lo que la comparación se reduce a:

 1355270400000 < 1384214400000

Es por eso que las cadenas a menudo se analizan en objetos de fecha para comparar. Sin embargo, tenga en cuenta que mientras:

 '2022-01-06' == '2022-01-06' // true

Cuando se convierte a Fechas:

 new Date('2022-01-06') == new Date('2022-01-06') // false

porque dos objetos (Fecha u otro) nunca son == o === entre sí, entonces:

 new Date(/* anything */) == new Date(/* anything */)

siempre es falso, incluso si ambos objetos Date representan fechas no válidas. Si quieres ver si son iguales, compara los valores de tiempo:

 new Date('2022-01-06').getTime() == new Date('2022-01-06').getTime()

Pero tenga cuidado al analizar cadenas, consulte ¿Por qué Date.parse da resultados incorrectos?

about 4 years ago · Juan Pablo Isaza Relatório

0

¡Nunca use cadenas literales para fechas (especialmente en JavaScript donde todo es un pato) para comparar!

Dates y DateTimes son raros y extraños y en realidad no se pueden usar en la programación, pero como necesitamos hacer algo con ellos, "saltamos por completo, esto es una locura, parte".

Solo por diversión, es posible que desee leer la publicación de blog de Jon Skeet al respecto:https://codeblog.jonskeet.uk/2012/05/02/more-fun-with-datetime/

Pero solo por el bien del argumento, compare una fecha con una fecha literal que se resolverá en '2021-02-23' < 'AA' que también es verdadero o falso (no lo probé), pero para JavaScript la comparación es similar , no hay comparación de tipos, son solo valores.

about 4 years ago · Juan Pablo Isaza 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