• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

204
Vistas
¿Cómo obtengo los días entre el día de hoy y el último día del mes usando Moment.js?

Aquí está el código que tengo ahora mismo:

 const moment = require('moment') const m = moment const currDay = m().format('D') const dayOfWeek = m().format('dddd') const daysInMonth = m().daysInMonth() const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm'); const endOfMonth = moment().endOf('month').format('YYYY-MM-DD hh:mm');

Necesito crear una fila de calendario donde el primer elemento sería la fecha de hoy, y el resto de los elementos del calendario serían la cantidad de días que quedan dependiendo del mes actual para poder representar cada día intermedio en mi HTML con Vue.

Ejemplo: mié 8, jue 9, vie 10 ... vie 31.

over 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Creo que el OP se equivoca con el error común de formatear prematuramente. format es bueno para ver un resultado intermedio, pero hacerlo produce una cadena que no es buena para cálculos adicionales.

Intente manejar solo objetos de fecha. Convierta a cadenas solo cuando deba: (a) presentar a un lector humano, o (b) serializar para almacenamiento o transmisión.

Trabajando sin formatear...

 const daysRemainingThisMonth = moment().endOf('month').diff(moment(), 'days'); console.log(`There are ${daysRemainingThisMonth} days remaining this month`)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

over 3 years ago · Santiago Trujillo Denunciar

0

Al igual que un equivalente de POJS, si tiene una función para devolver el último día del mes, puede usar eso y obtener la diferencia entre las dos fechas, por ejemplo

 function getMonthEnd(date = new Date()) { return new Date(date.getFullYear(), date.getMonth() + 1, 0); } function getMonthDaysLeft(date = new Date()) { return getMonthEnd(date).getDate() - date.getDate(); } let d = new Date(); console.log(`There are ${getMonthDaysLeft(d)} days left in ${d.toLocaleString('en',{month:'long'})}.`);

Para obtener una lista/matriz de los días restantes, simplemente recorra una fecha, agregue 1 día a la vez y escriba las fechas en el formato requerido en la lista:

 function getMonthDaysLeftAsList(date = new Date()) { let d = new Date(+date); // Formatter let f = new Intl.DateTimeFormat('en',{ day: 'numeric', month: 'short' }); let m = d.getMonth(); let dayList = []; while (d.getMonth() == m) { dayList.push(f.format(d)); d.setDate(d.getDate() + 1); } return dayList; } console.log(getMonthDaysLeftAsList());

over 3 years ago · Santiago Trujillo 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda