Tengo este codigo en mi web
Código HTML:
<time datetime="2015-01-15">
<div class="month"></div>
<div class="day"></div>
<div class="sem"></div>
</time>
Uso el script moment.js para formatear las fechas y jquery para insertar el mes en el div month, el dia en el div day y el dia de la semana en el div sem.
El tema es que muestro varios eventos, y cada evento suele contener varias fechas, y repito este código muchas veces en mi página.
Lo que he echo es una funcion con jquery y con .each recorro todos los elementos time de la web.
Código Javascript
:
Ver original$('time').each(function() {
var t = $(this);
//recojo la fecha del atributo datetime
var date = t.attr('datetime');
//selecciono cada div dentro de time
var day = t.find('.day');
var sem = t.find('.sem');
var month = t.find('.month');
//guardo 3 formatos diferentes para dia mes y dia de la semana con momentjs
var formatday = moment(date).format("D");
var formatsem = moment(date).format("ddd");
var formatmonth = moment(date).format("MMM");
//escribo el valor formateado en el div correspondiente
day.text(formatday);
sem.text(formatsem);
month.text(formatmonth);
});
Al final esto me imprime
ENE 15 LUN todo dentro de sus divs. Todo ok.
1a pregunta. ¿Esta es una forma óptimizada de hacerlo o no es lo adecuado de cara al rendimiento? ¿hay una forma mejor?
2a pregunta, esto no se como hacerlo. Pongamos que cada evento tiene 3 fechas. Me imprimiría esto:
ENE 15 LUN
ENE 16 MAR
ENE 17 MIE
Pero yo quisiera esto:
ENE 15 LUN 16 MAR 17 MIE
Es decir, que el mes solo me lo muestre en la primera fecha de cada evento, a no ser que el siguiente día comporte un cambio de mes.
ENE 30 LUN 31 MAR
FEB 1 MIE
Gracias!