Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
¿La función IF está eliminando el objeto de fecha en javascript?

Pasé una hora buscando respuestas y probando cosas diferentes, así que agradezco cualquier ayuda aquí.

El siguiente código funciona muy bien para encontrar la fecha de vigencia de la parte B de alguien. Sin embargo, cuando el cumpleaños de alguien es realmente el 1 de un mes, se usa la función 'si', y ya no puedo formatear ni escribir la fecha. Es casi como si 'partB_eff' ya no fuera un objeto de fecha. (Soy un novato, así que podría estar inventando esta parte).

Recibo el error "TypeError: partB_eff.toLocaleDateString no es una función en AutoFill_6_Step_Checklist (Código: 24:27)"

¿Cómo puedo resolver esto?

 let birthday = new Date(e.values[2]); //this is a date entered from a google form let bdayCopy = new Date(birthday); //I created this since I'll be using .setMonth(), and I don't want to change the original date of the birhtday let bday65 = new Date(bdayCopy.setMonth(bdayCopy.getMonth()+780)); //finds the 65th birthday let partB_eff = new Date(bdayCopy.setDate(01)); //find's the Medicare part B effective date (the 1st of the month someone turns 65) if(birthday.getDate()==1){ partB_eff = partB_eff.getMonth-1; //if the person's birthday is really on the 1st of the month, the part b effective date is the 1st of the month prior. partB_eff must be converted } partB_eff = partB_eff.toLocaleDateString('en-us',{year:"numeric",month: "short",day:"numeric"}); //format partB_eff so that it looks nice on paper
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

partB_eff = partB_eff.getMonth-1;

No hace lo que crees que hace. Lo que hace es obtener la función vound getDate de su objeto de fecha e intentar restarle uno. En cualquier otro idioma, tratar de restar una función sería un error de tipo, pero Javascript es Javascript y permite operaciones numéricas en casi cualquier tipo. Una función menos un número en JS es NaN . NaN no tiene un método llamado toLocaleString , de ahí el error.

Lo que es interesante es que hiciste la misma operación correctamente arriba con bdayCopy.setMonth(bdayCopy.getMonth()+780) Simplemente haz lo mismo aquí

 bdayCopy = new Date(bdayCopy.setMonth(bdayCopy.getMonth()-1));

También algunos conceptos importantes. if en Javascript no es una función. if es una palabra clave que inicia una declaración condicional. No puede hacer ninguna de las cosas que puede hacer con una función con if. No puede llamarlo o asignarlo a una variable o pasar ot como un argumento de función. Claramente, comprender qué es una función es algo que debe hacer para poder trabajar en JS o, francamente, en cualquier otro idioma.

Finalmente, si está haciendo matemáticas de fechas en JS, le recomiendo que use una biblioteca de fechas como DateFns o Moment. Las API de fecha nativa de Javascript son posiblemente la API de fecha peor diseñada de cualquier idioma.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda