Búsqueda de sitios web

javascript - Cómo extraer años de una cadena que contiene un rango de fechas [Typescript/Angular]


Soy un principiante en Typescript. Tengo un rango de fechas que estoy recibiendo como una cadena.

var range="7-01-2018 VS 5-01-2019";

Está codificado por ahora solo para explicarte. Pero más adelante también estará solo en esta forma de cadena. Tengo que extraer 2018 y almacenarlo en alguna variable, digamos startYear y también tengo que extraer 2019 y almacenarlo en la variable endYear. Para que más adelante pueda compararlos y aplicar validaciones.

Intenté usar:

  1. subcadena(inicio,fin)

Mi código funcionó, pero el problema es que la cadena cambiará su longitud cuando se seleccione una fecha de dos dígitos. Por ejemplo:

  1. 7-01-2018 VS 25-01-2019 o
  2. 17-01-2018 VS 5-01-2019 o
  3. 27-01-2018 VS 25-01-2019

En estos casos start y end tendrán significados diferentes. ¿Qué debo hacer ahora? Por favor, ayúdame.

Mi método es:

myValidator() {

  range="7-01-2018 VS 5-01-2019";

  startYear=range.substring(5,8);

  endYear=range.substring(18,21);

  if(endYear<startYear) {
    console.log("Invalid range");
  }
}

Ahora estoy planeando usar split(). Y dividir la cadena en diferentes partes y luego escribir algo de lógica con eso. Pero el problema con split es que hay un VS en medio. Sin embargo, para el parámetro separator puedo dar el símbolo -. Por favor corríjanme si estoy equivocado.

Respuesta #1

tienes razón, dividir será bueno

myValidator() {

      range="7-01-2018 VS 5-01-2019";

      startYear=parseInt(range.split("VS")[0].split("-")[2])

      endYear=parseInt(range.split("VS")[1].split("-")[2])

      if(endYear<startYear) {
        console.log("Invalid range");
      }
    }

Respuesta #2

Todo en una línea

const [,startYear,endYear]=range.match(/.*-(\d{4}) VS .*-(\d{4})$/);