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:
- 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:
7-01-2018 VS 25-01-2019o17-01-2018 VS 5-01-2019o27-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})$/);
