Challenge Description:
For day six of Space Week, you will be given a date in the format
"YYYY-MM-DD" and need to determine the phase of the moon for
that day using the following rules:
Use a simplified lunar cycle of 28 days, divided into four equal phases:
"New": days 1 - 7"Waxing": days 8 - 14"Full": days 15 - 21"Waning": days 22 - 28
After day 28, the cycle repeats with day 1, a new moon.
-
Use
"2000-01-06"as a reference new moon (day 1 of the cycle) to determine the phase of the given day. - You will not be given any dates before the reference date.
- Return the correct phase as a string.
Solution:
function moonPhase(dateString) {let arr = dateString.split("-");let refDate = new Date(["2000", "01", "06"]);let date = new Date(arr);let difference = date - refDate;let daysDiff = Math.floor(difference / (1000 * 60 * 60 * 24));let cycleDay = (daysDiff % 28) + 1;if (cycleDay >= 1 && cycleDay <= 7) return "New";if (cycleDay >= 8 && cycleDay <= 14) return "Waxing";if (cycleDay >= 15 && cycleDay <= 21) return "Full";if (cycleDay >= 22 && cycleDay <= 28) return "Waning";}
Publicar un comentario
¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.
» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?
Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.
¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.