Parecería que hay problemas con las fechas de las entradas. Si esto es un error circunstancial de Blogger o un cambio, nadie lo sabe. Por lo que puede verse, ha desaparecido uno de los formatos que podían elegirse en la Configuración | Formato | Formato de cabecera de fecha, el que los mostraba así: 16-oct-2009.


Entonces, quien emplea algún script para mostrar esa fecha de otro modo, ya sea como un calendario o como un texto formateado verán que la fecha o parte de ella se ve como undefined.

Hay muchas variantes de esos scripts y para solucionar el problema, no hay más remedio que entenderlos un poco. Este es un modelo standard:
var lafecha = cual.split('-');
fday = "<div class='caledia'>"+lafecha[0]+"</div>";
fmonth = "<div class='calemes'>"+lafecha[1]+"</div>";
fyear = "<div class='caleanio'>"+lafecha[2]+"</div>";
La primera línea separa la fecha en partes, usando, en este caso, un guión como separador. Es decir, si la fecha es 16-oct-2009, tendremos tres datos independientes:
el dia es lafecha[0] o sea 16
el mes es lafecha[1] o sea 10
el año es lafecha[2] o sea 2009
Si cambiamos el formato de la fecha (o nos fuerzan a hacerlo), deberemos cambiar el script para adaptarlo:

Si usamos 16/10/2009 (dia/mes/año) el separador que debemos buscar es la barra inclinada y el orden de los datos será: el dia es lafecha[0], el mes es lafecha[1] y el año es lafecha[2]

Si usamos 10/16/2009 (mes/dia/año) el separador que debemos buscar es la barra inclinada y el orden de los datos será: el mes es lafecha[0], el dia es lafecha[1] y el año es lafecha[2]

Si usamos 10.16.2009 (mes/dia/año) el separador que debemos buscar es un punto y el orden de los datos será: el mes es lafecha[0], el dia es lafecha[1] y el año es lafecha[2]

Si usamos 2009/10/16 (año/mes/dia) el separador que debemos buscar es la barra inclinada y el orden de los datos será: el año es lafecha[0], el mes es lafecha[1] y el día es lafecha[2]

Si usamos 2009-10-16 (año/mes/dia) el separador que debemos buscar es un guión y el orden de los datos será: el año es lafecha[0], el mes es lafecha[1] y el dia es lafecha[2]

En todos estos casos, el mes ya no se muestra como texto sino como un número así que deberemos agregar algo más para convertirlo:
var mes=new Array();
mes[1]="ene"; mes[2]="feb"; mes[3]="mar"; mes[4]="abr"; mes[5]="may"; mes[6]="jun";
mes[7]="jul"; mes[8]="ago"; mes[9]="sep"; mes[10]="oct"; mes[11]="nov"; mes[12]="dic";
El mes entonces será mes[lafecha[0]] o lafecha[X] dependiendo de cual sea el dato que la contenga

Si usamos el formato 16 octubre 2009 (dia/mes/año) el separador que debemos buscar es la barra inclinada y el orden de los datos será: el dia es lafecha[0], el mes es lafecha[1] y el año es lafecha[2]

Y deberemos "cortar" el texto del mes si sólo queremos usar tres caracteres para mostrarlo:
lafecha[1].substring(0,3));

Demasiadas variantes, ¿verdad? Me limito entonces a un modelo concreto, modificando el script de esta entrada. Selecciono entonces un nuevo formato de fecha en la Configuración de Blogger: elijo 16/10/2009 (dia/mes/año) y espero que dure y no la eliminen:
<script type='text/javascript'>
//<![CDATA[
var ultimaFecha;
var mes=new Array();
mes[1]="ene"; mes[2]="feb"; mes[3]="mar"; mes[4]="abr"; mes[5]="may"; mes[6]="jun";
mes[7]="jul"; mes[8]="ago"; mes[9]="sep"; mes[10]="oct"; mes[11]="nov"; mes[12]="dic";
function calendario(cual) {
if (cual == "") { cual = ultimaFecha; }
var lafecha = cual.split('/');
verCero=lafecha[0].substr(0,1); if (verCero == "0") { lafecha[0]=lafecha[0].substr(1) }
fday = "<div class='caledia'>"+lafecha[0]+"</div>";
fmonth = "<div class='calemes'>"+mes[parseFloat(lafecha[1])]+"</div>";
fyear = "<div class='caleanio'>"+lafecha[2]+"</div>";
document.write(fday+fmonth+fyear);
ultimaFecha = cual;
}
//]]>
</script>
Un detalle extra. El problema, también se evita eliminando <data:post.dateHeader/> y cambiando el dato a leer por <data:post.timestamp/> tal como se muestra en esta entrada.

20 comentarios:

Graciela  

ohhh Jmiur con tu entrada de tomar la fecha por la hora no hay error, por suerte!!!
Buen sábado que lo disfruten!!!

Responder
hugo  

Hola amigo jimur es verdad pero sabes elimine todo e implementé el demofecha que realizaste en css es más simple y solo hay que incluirlo en cada post con la fecha correspondiente.A esta altura ya me he convencido de que hay que evitar en lo posible la dependencia externa y más en el uso de script aunque este no es el caso pero gracias a ti y no me canso de repetirlo he aprendido a solucionar los problemas una vez más te dejo un gran saludo y que tengas un buen fin de semana.

Responder
Kenneth Jack  

ahhh era eso..y pensaba que le habia volado accidentalmente algo a la plantilla... estuve intentando colocarlo de nuevo anoche y me salia ese undefined...como no sabia cual era el problema me guie con este post Fecha tipo calendario en todas las entradas de Rosa, me resulto bien salvo por un detalle: de 4 post en la principal, 2 tutulos son de un color y dos de otro...detallles, detalles..jeje...mas tarde vuelvo a colocarlo de tu manera con esta solucion...Blogger, Blogger, cuando aprenderan a notificar los cambios...Saludos amigo...☺

Responder
Cristian  

Pero hay un problema con este truco, cuando subís 2 posts con la misma fecha, al último post se le desaparece la fecha.

Responder
Cristian  

Corrijo..La fecha desaparece cuando 2 posts tienen la misma fecha y están en la misma página pero, aparece cuando los posts de las mismas fechas se encuentran en páginas diferentes o en páginas individuales. ¿Me explico?

BLOG COMPROBADO

Explicación:
*Si ven en ese blog hay 2 posts con las mismas fechas, los cuales el 1º ("blog en construcción")se encuentra con su fecha respectiva y el 2º ("prueba 7")con su fecha oculta.
*Pero si se dirijen a la pestaña "otros" del menú o la etiqueta del mismo nombre, verán que el post "prueba 7" se encuentra con su fecha respectiva.

Mi pregunta ¿A qué se debe el problema y cómo podría solucionarse?

Responder
JMiur  

Graciela, Hugo: Sí, creo que esa es la solución definitiva. Por pura casualidad nos evitamos dolores de cabeza :D

Kenneth Jack: Nunca. Son sordos y mudos :D

Cristian:
No. No tiene errores, sólo es una corrección de un script anterior. En tu caso, falta esa otra parte que es la que guarda el dato llamado ultimaFecha. Fíjate acá, por ejemplo.

Responder
Dña. Urraca  

Hola jefe, extraño mundo blogger que se queda con lapiceros, sobres y ahora fechas, y más extraño si vemos que se queda solo con las fechas de la mitad del globo porque con las mías no se ha quedado, es más estoy montando un blog para el cole de uno de mis monstruos(ya ves a quien han ido a coger, no había mas torpes libres)y hace un rato he estado justo dando forma a la fecha y tampoco ha desaparecido, eso si aún no se porque a mi me aparece en post footer y no en las entradas, pero eso debió de ser algo que hice al principio.
Y ahora perdona que grite en tu casa pero voy a hacer una cosa "SEÑOR BLOGGER DEVUELVALE LAS FECHAS A MI AMIGO, SI NO TIENE NADA MEJOR CON QUE JUGAR PEIME BOMBILLAS" (a lo mejor me escucha)

Responder
Fawkes  

Yo he optado por no mostrar la fecha, pero voy a intentar esto a ver que sale... gracias =)

Responder
Dña. Urraca  

He vuelto a hacerte una consulta porque no se que debo tocar. Cuando empece, siguiendo tu tutorial redimensione el blog, le di 980px al header y lo mismo hice con el main y la sidebar para que junto con los margenes midieran lo mismo, sin embargo me sobresale el header un trozo, y lo mismo me está pasando con el blog que estoy montando para el cole lo verás mejor que en el mio (http://laplumadequevedo.blogspot.com/), pero es que no se que tocar para que tengan el mismo ancho porque en cuanto que le doy un poco más la sidebar se va a Pernambuco. ¿Donde toco?

Responder
JMiur  

Dña. Urraca:
Si bien el ancho es 980, a eso debes sumarle los bordes márgenes y paddings.

Los 980 de los posys y la sidebar som:
borde + ancho + borde + borde + ancho + borde = 10 + 660 + 10 + 10 + 280 + 10 = 980

El header tiene un ancho de 980 más los bordes o sea, en realidad mide 10 + 980 + 10 = 1000
y por eso sobresale 20 pixeles; debería tener 960 o todo aumentarse a 1000, aumentando los anchos de los posts y la sidebar.

Responder
Raul  

Ya he cambiado el script no se si habré hecho algo mal, mi blog es http://laplataformaazul.blogspot.com

Responder
Xesc  

Implementé este truco en mi blog, pero solo me funciona para el mes actual. En posts de cualquier otro mes me sigue saliendo el Undfefined. ¿Alguien sabe porqué?

Responder
JMiur  

Cambia esta parte del script:

fmonth = "<div class='calemes'>"+mes[lafecha[1]]+"</div>";

por esta otra:

fmonth = "<div class='calemes'>"+mes[parseFloat(lafecha[1])]+"</div>";

porque los meses incluyen un caracter 0 delante y de esa forma no se muestran.

Responder
Xesc  

Muchísimas gracias.

Responder
Raul  

Hola JMiur, ahora ya no me muestra undefined, muchas gracias, pero tengo otro problema, hay algunas fechas que no las muestra si ya las ha mostrado, de 2 o más posts con las misma fecha solo se muestra la fecha en el primero, he intentado solucionarlo fijándome en la entrada que le dijiste a Cristian, pero no se me ha solucionado el problema, ¿podrías ver mi blog y ver si tengo algún script mal puesto o si hay algo que no he puesto...?

http://laplataformaazul.blogspot.com

Responder
JMiur  

No es algo que pueda verse online.

Responder
egoloco  

Implementando este truco pude arreglar la fecha, pero se mostraba en el orden que lo tenes vos en tu blog, osea el numero del dia arriba, el mes abajo y el año más abajo. Pero quería intercambiar el orden poniendo el mes arriba. Se me ocurrió intercambiar el numero de lafecha[X] poniendo el mes un 0 y en día un 1, pero no funcionó. Pero no vi la ultima linea del script donde dice:

document.write(fday+fmonth+fyear)


entonces cambie de lugar el mes y el dia en esta línea.

Como decis vos, explicación engorrosa, pero queria compatirla :D

Responder
JMiur  

Claro, basta intercambiar esas tres variables para cambair el orden o eliminar una de ellas si no se quiere el año, por ejemplo. Parece engorroso, es engorroso pero, uno termina acostumbrándose :D

Responder
J@gg3r  

ya encontre el post JMIUR, ahora que cambio el script por el que pones arriba por el antiguo, desaparece el dia y el mes, solo quedando la imagen del calendario (azul que amablemente nos proporcionaste)
Ahora si ya no se que cambiar, por el momento solo hago cambios con vista previa, y conservo mi calendario con solo numeros (mes y día)
ojala me puedas ayudar un Saludo¡

Responder
JMiur  

Ahhhh, llegué tarde y contesté en el comentario anterior :D DEbo empezar de adelante para atrás y no al revés :D

Esto, es algo que en vista previa no funcionará, los scripts, allí, no se ejecutan.

Primero que nada, agrega el array, o sea, la lista de meses:
var mes=new Array();
mes[1]="ene"; mes[2]="feb"; ............

Luego, sólo deberías cambiar:
lafecha[1]
por:
mes[lafecha[1])]

Sería importante que colocaras la primeara parte con el array poruqe, de ese modo, podría verlo online y verificar si en tu caso requiere algún ajuste extra.

Responder

¿Quiere dejar un comentario?

recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...

Todos los archivos y demos alojados en Fileden han sido redireccionados y deberían estar funcionando correctamente.
De todos modos, también puede accederse a ellos a través de SkyDrive

Nota: sólo los miembros de este blog pueden publicar comentarios.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

 
CERRAR