Foros del Web » Programando para Internet » Javascript »

como paso de timestamp a fecha normal

Estas en el tema de como paso de timestamp a fecha normal en el foro de Javascript en Foros del Web. Hola resulta que estoy creando una seccion de eventos con el google calendar mediante json pero cuando se visualiza el startime me lo muestra con ...
  #1 (permalink)  
Antiguo 03/07/2011, 14:54
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
como paso de timestamp a fecha normal

Hola resulta que estoy creando una seccion de eventos con el google calendar mediante json pero cuando se visualiza el startime me lo muestra con formato 2011-07-16T10:30:00.000+02:00 he conseguido cambiarlo de formato tipo Sat Jul 16 2011 10:30:00 GMT+0200 (Hora de verano romance) usando new Date() y con var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,'$3-$2-$1'); me lo muestra asi 16-07-2011 en un principio esta ultima es la correcta pero necesito que el mes me lo muestre en formato texto es decir 16-jul-2011 y es aqui donde me pierdo. Conoceis alguna forma de hacer que se muestre asi.
Gracias!!
  #2 (permalink)  
Antiguo 03/07/2011, 16:28
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 18 años, 1 mes
Puntos: 122
Respuesta: como paso de timestamp a fecha normal

Tienes varias opciones. Por ejemplo, para no complidarte demaciado, haz lo siguiente:

Performa un split en tu fecha usando como separador el guíon "-"
Toma el segundo elemento del array que resulta del split.
Haz un chequéo para ver que mes es.
De acuerdo al mes, contruye tu nueva fecha.

En pseudo-código sería así:

fecha = fecha.split("-");
var mes = fecha[1];
if(mes == 01){
mes = "Enero"
}
//El resto de los chqueos aquí.
var nuevaFecha = fecha[0] + "-" + mes + "-" + fecha[2];

Ese código puede no funcionar correctamente, por eso es que lo llamé pseudo-código. Ajústalo conforme sea necesario.
__________________
twitter: @imbuzu
  #3 (permalink)  
Antiguo 03/07/2011, 16:31
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

Vamos a ver:
Código Javascript:
Ver original
  1. strFecha.replace(RegExpFecha, function(anio, mes, dia){
  2.  var meses = ['ene', 'feb', 'mar', 'may']; // ...
  3.  return dia + '-' + meses[parseInt(mes) - 1] + '-' + anio;
  4. });
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 03/07/2011, 16:47
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Gracias a los dos pero tengo una duda ya que en el codigo de _cronos2 no se ahora mismo como aplicarlo, sino es molestia me lo podriais extender.
Este es mi codigo completo:
Código Javascript:
Ver original
  1. function getEvent(){
  2.      $.getJSON('http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json-in-script&callback=?&orderby=starttime&max-results=15&singleevents=true&futureevents=true', function(data) {
  3.         $.each(data.feed.entry, function(i, item) {
  4.         var title = item['title']['$t'];
  5.         var content = item['content']['$t'];
  6.         var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,'$1-$2-$3');
  7.         $('#event').append('<li class="event">'+start+'<div class="title-event">'+title+'</div><div class="content-event">'+content+'</div></li>');
  8.         });
  9.     });
  10.  }
  11. $(document).ready(function() {
  12.     getEvent();
  13. });
  #5 (permalink)  
Antiguo 03/07/2011, 17:08
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

Tienes que cambiar '$1-$2-$3' por la función que uso yo.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #6 (permalink)  
Antiguo 03/07/2011, 18:10
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Disculpame o estoy dormido o es el calor pero no lo entiendo.
  #7 (permalink)  
Antiguo 04/07/2011, 05:17
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

En la segunda parte del replace, tú usas un string '$1-$2-$3'. ¿Hasta ahí bien no? Bueno, pues ese string tienes que reemplazarlo por la función que uso yo en la 2ª parte del replace [en el ejemplo que te puse antes].
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 04/07/2011, 06:54
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Perdoname, o no lo hago bien o pasa alguna cosa, aqui te pongo como lo hago:

Código Javascript:
Ver original
  1. var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/, function(anio, mes, dia){
  2.  var meses = ['ene', 'feb', 'mar', 'may']; // ...
  3.  return dia + '-' + meses[parseInt(mes) - 1] + '-' + anio;
  4. });

y el resultado en la web es:
07-undefined-2011-07-10T02:30:00.000+02:00

Gracias por tu ayuda!!
  #9 (permalink)  
Antiguo 04/07/2011, 07:00
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

Pensé que te ibas a dar cuenta
Si te fijas, meses es el array donde están las abreviaturas de los nombres de los meses, pero sólo llega hasta mayo (ups, me doy cuenta ahora de que me salté abril ).
Después de la declaración, hay unos puntos suspensivos, para que siguieras poniendo tú los meses que faltaban (jun, jul, etc.).
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 04/07/2011, 07:35
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Cita:
Iniciado por _cronos2 Ver Mensaje
Pensé que te ibas a dar cuenta
Si te fijas, meses es el array donde están las abreviaturas de los nombres de los meses, pero sólo llega hasta mayo (ups, me doy cuenta ahora de que me salté abril ).
Después de la declaración, hay unos puntos suspensivos, para que siguieras poniendo tú los meses que faltaban (jun, jul, etc.).
Saludos (:
Código Javascript:
Ver original
  1. var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/, function(anio, mes, dia){
  2.         var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
  3.         return dia + '-' + meses[parseInt(mes) - 1] + '-' + anio;
  4.         });

perdon yo tambien me equivoque este es el codigo original que intento usar.

y este es el resultado.

07-undefined-2011-07-16T10:30:00.000+02:00
  #11 (permalink)  
Antiguo 04/07/2011, 07:46
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

¿Y cuál es el string sobre el que se está ejecutando el replace?
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #12 (permalink)  
Antiguo 04/07/2011, 07:59
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Código Javascript:
Ver original
  1. function getEvent(){
  2.      $.getJSON('http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json-in-script&callback=?&orderby=starttime&max-results=15&singleevents=true&futureevents=true', function(data) {
  3.         $.each(data.feed.entry, function(i, item) {
  4.         var title = item['title']['$t'];
  5.         var content = item['content']['$t'];
  6.         var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,    function(anio, mes, dia){
  7.         var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
  8.         return dia + '-' + meses[parseInt(mes) - 1] + '-' + anio;
  9.         });
  10.         $('#event').append('<li class="event">'+start+'<div class="title-event">'+title+'</div><div class="content-event">'+content+'</div></li>');
  11.         });
  12.     });
  13.  }
  14. $(document).ready(function() {
  15.     getEvent();
  16. });

Este es el codigo completo para mostrar los eventos y si a cual es el string antes era el $3-$2-$1 y al decirme que lo cambie por tu funcion pense que ya estaba.
y el resultado es este:
07-undefined-2011-07-16T10:30:00.000+02:00
y deberia ser 07-jul-2011
Por favor me podrias poner el codigo que tu harias y asi verlo mas claro, gracias y disculpa las molestias estoy empezando a estudiar javascript y estoy muy verde.
  #13 (permalink)  
Antiguo 04/07/2011, 08:13
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

Cita:
Iniciado por _cronos2
¿Y cuál es el string sobre el que se está ejecutando el replace?
O sea, ¿qué devuelve
Código:
item['gd$when'][0].startTime
?
Necesito saber cómo es el string para saber qué replace usar!
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #14 (permalink)  
Antiguo 04/07/2011, 08:23
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Hola el item['gd$when'][0].startTime sin modificar nada devuelve 2011-07-16T10:30:00.000+02:00
y uso un each para extraer los datos de un archivo xml que cojo de google calendar.
lo hice mirando este documento.
http://code.google.com/intl/es-ES/apis/gdata/docs/json.html
Espero que sea lo que me preguntas, saludos!!
  #15 (permalink)  
Antiguo 04/07/2011, 08:49
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 6 meses
Puntos: 310
Respuesta: como paso de timestamp a fecha normal

Como veo que la regexp nos va a traer muchos dolores de cabeza, voy a usar substr y split para acabar antes:
Código Javascript:
Ver original
  1. var separado = strFecha.substr(0, 10), meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
  2. return separado[2] + '-' + meses[parseInt(separado[1]) - 1] + '-' + separado[0];
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #16 (permalink)  
Antiguo 04/07/2011, 09:01
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Hola me podrias poner el codigo completo por favor.
  #17 (permalink)  
Antiguo 04/07/2011, 10:14
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 18 años, 1 mes
Puntos: 122
Respuesta: como paso de timestamp a fecha normal

Código Javascript:
Ver original
  1. function getEvent(){
  2.          $.getJSON('http://www.google.com/calendar/feeds/[email protected]/public/full?alt=json-in-script&callback=?&orderby=starttime&max-results=15&singleevents=true&futureevents=true', function(data) {
  3.             $.each(data.feed.entry, function(i, item) {
  4.             var title = item['title']['$t'];
  5.             var content = item['content']['$t'];
  6.             var start = item['gd$when'][0].startTime.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,    function(full, anio, mes, dia){
  7.         var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
  8.         return dia + '-' + meses[parseInt(mes) - 1] + '-' + anio;
  9. });
  10.             $('#event').append('<li class="event">'+start+'<div class="title-event">'+title+'</div><div class="content-event">'+content+'</div></li>');
  11.             });
  12.         });
  13.      }
  14.     $(document).ready(function() {
  15.         getEvent();
  16.     });

Parece ser que _cronos2 olvidó que el primer parámetro que recibe la función es el texto completo al que se le aplica el replace.
__________________
twitter: @imbuzu
  #18 (permalink)  
Antiguo 04/07/2011, 10:21
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Gracias a los dos por vuestro tiempo y te agradezco mucho el codigo buzu, funciona de maravillas.
  #19 (permalink)  
Antiguo 04/07/2011, 12:24
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 18 años, 1 mes
Puntos: 122
Respuesta: como paso de timestamp a fecha normal

Si bueno, no te acostumbres. Normalmente no doy código. Creo que hace programadores "flojos". Sin embargo, veo que no tienes mucha experiencia.
Como tip, muchas veces sirve hacer un alert o un console.log para ver que parámetros está realmente reciviendo tu función. Y yo te recomendaría que no escribas código que no entiendes.
Se sincero contigo mismo y entiende bien lo que escribes, de otro modo vas a terminar creando aplicaciones con errores, inseguras y que serán una pesadilla para mantener.
__________________
twitter: @imbuzu
  #20 (permalink)  
Antiguo 04/07/2011, 12:34
Avatar de 23r9i0  
Fecha de Ingreso: noviembre-2008
Ubicación: Catalonia
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 33
Respuesta: como paso de timestamp a fecha normal

Mi problema es que estoy empezando, y hay cosas que se me escapan.
  #21 (permalink)  
Antiguo 04/07/2011, 12:59
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 18 años, 1 mes
Puntos: 122
Respuesta: como paso de timestamp a fecha normal

Si, lo sé, todos pasamos por ahí, y te felicito. Sigue tratando, pero cuando hagas código para sitios en producción no sore pases tus propios límites. Cuando estás prácticando, ahí sí métete con todo lo que puedas.
__________________
twitter: @imbuzu

Etiquetas: timestamp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:57.