Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Poner a cero los segundos que me llegan de un datetime

Estas en el tema de Poner a cero los segundos que me llegan de un datetime en el foro de Javascript en Foros del Web. Hola, Tengo una funcion a la que le llegan dos parámetros, fechaInicio y fechaFin. estas tienen estos valores: fechaInicio=2014-06-13T10:00:02.437Z fechaFin=2014-06-13T11:00:03.019Z Necesito que me deje las ...
  #1 (permalink)  
Antiguo 13/06/2014, 05:02
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Poner a cero los segundos que me llegan de un datetime

Hola,
Tengo una funcion a la que le llegan dos parámetros, fechaInicio y fechaFin. estas tienen estos valores:

fechaInicio=2014-06-13T10:00:02.437Z
fechaFin=2014-06-13T11:00:03.019Z

Necesito que me deje las fechas de esta forma:

fechaInicio=2014-06-13T10:00:00.437Z
fechaFin=2014-06-13T11:00:00.019Z


es decir, que los segundos me los ponga a 0 de las dos fechas.

¿Como puedo hacerlo?
__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 13/06/2014, 06:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Poner a cero los segundos que me llegan de un datetime

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. function resetDate(str)
  4. {      
  5.     var regex = /([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}):([0-9]{2}).([0-9]{3}Z)/;
  6.     return (str.replace(regex, "$1:00.$3"));
  7. }  
  8.    
  9. console.log(resetDate('2014-06-13T10:00:02.437Z'));
  10. console.log(resetDate('2014-06-13T11:00:03.019Z'));
  11.    
  12. </script>

Tocaria que revises la expresion regular ya que.... no tengo idea que son esas letras T o Z y si pueden ser otras letras tambien y en que posiciones ...
__________________
Salu2!

Última edición por Italico76; 13/06/2014 a las 06:30
  #3 (permalink)  
Antiguo 13/06/2014, 09:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Poner a cero los segundos que me llegan de un datetime

También puedes ubicar los segundos utilizando los métodos indexOf, lastIndexOf y substring y con el método replace, realizas el reemplazo.

Código Javascript:
Ver original
  1. var fechaInicio = "2014-06-13T10:00:02.437Z",
  2.     fechaFin = "2014-06-13T11:00:03.019Z",
  3.     fI1 = fechaInicio.lastIndexOf(":") + 1, //Posición inicial de los segundos de fechaInicio
  4.     fI2 = fechaInicio.indexOf("."), //Posición final de los segundos de fechaInicio
  5.     fF1 = fechaFin.lastIndexOf(":") + 1, //Posición inicial de los segundos de fechaFin
  6.     fF2 = fechaFin.indexOf("."); //Posición final de los segundos de fechaFin
  7.  
  8. fechaInicio = fechaInicio.replace(fechaInicio.substring(fI1, fI2), "00");
  9. fechaFin = fechaFin.replace(fechaFin.substring(fF1, fF2), "00");

Lee la información que se describe en los enlaces que adjunté para que sepas cómo trabajan cada uno de los métodos que utilicé.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 16/06/2014, 04:05
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Poner a cero los segundos que me llegan de un datetime

Cita:
Iniciado por Alexis88 Ver Mensaje
También puedes ubicar los segundos utilizando los métodos indexOf, lastIndexOf y substring y con el método replace, realizas el reemplazo.

Código Javascript:
Ver original
  1. var fechaInicio = "2014-06-13T10:00:02.437Z",
  2.     fechaFin = "2014-06-13T11:00:03.019Z",
  3.     fI1 = fechaInicio.lastIndexOf(":") + 1, //Posición inicial de los segundos de fechaInicio
  4.     fI2 = fechaInicio.indexOf("."), //Posición final de los segundos de fechaInicio
  5.     fF1 = fechaFin.lastIndexOf(":") + 1, //Posición inicial de los segundos de fechaFin
  6.     fF2 = fechaFin.indexOf("."); //Posición final de los segundos de fechaFin
  7.  
  8. fechaInicio = fechaInicio.replace(fechaInicio.substring(fI1, fI2), "00");
  9. fechaFin = fechaFin.replace(fechaFin.substring(fF1, fF2), "00");

Lee la información que se describe en los enlaces que adjunté para que sepas cómo trabajan cada uno de los métodos que utilicé.

Saludos

hola,

estoy intentando con el LastIndexOf y el indexOf y me esta dando este error: "JavaScript runtime error: Object doesn't support property or method 'indexOf'" y el mismo pero con lastIndexOf
No se xq no me deja.

__________________
Gracias por todo;

Un saludo
  #5 (permalink)  
Antiguo 16/06/2014, 05:01
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Poner a cero los segundos que me llegan de un datetime

Ya se porque me pasa eso, el problema es que las fechas me llegan como datetime y al hacer esto tienen que estar como String.

si encuentro una solución la pongo

__________________
Gracias por todo;

Un saludo
  #6 (permalink)  
Antiguo 16/06/2014, 06:01
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Poner a cero los segundos que me llegan de un datetime

Se que la solucion de Alexis a mi me funciona en Chrome y Firefox ... entonces te pregunto... en que navegador te da ese error ? porque lastIndexOf y indexOf trabajan sobre strings!

Y sere curioso tambien...... que error te da mi solucion ?
__________________
Salu2!

Última edición por Italico76; 16/06/2014 a las 06:10
  #7 (permalink)  
Antiguo 16/06/2014, 07:12
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Poner a cero los segundos que me llegan de un datetime

Cita:
Iniciado por Italico76 Ver Mensaje
Se que la solucion de Alexis a mi me funciona en Chrome y Firefox ... entonces te pregunto... en que navegador te da ese error ? porque lastIndexOf y indexOf trabajan sobre strings!

Y sere curioso tambien...... que error te da mi solucion ?

Me da el mismo error que con el otro código ya que estoy intentando hacer el replace de un datetime y no se puede hacer, tiene que ser de un String.

__________________
Gracias por todo;

Un saludo
  #8 (permalink)  
Antiguo 16/06/2014, 07:33
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Poner a cero los segundos que me llegan de un datetime

Ya te entendi..... si usaras el metodo .toString() el problema es que terminarias con un string y no con un objeto tipo Date, entonces creo necesitas eso:

Código Javascript:
Ver original
  1. function resetDate(fecha)
  2. {      
  3.     return fecha.setSeconds(0);
  4. }


Te muestro como funciona:

Código Javascript:
Ver original
  1. var fecha = new Date();
  2. console.log(fecha);
  3. fecha.setSeconds(0);  // pongo 00 los segundos!!!
  4. console.log(fecha);

<< fijate lo que paso con los segundos!
__________________
Salu2!

Última edición por Italico76; 16/06/2014 a las 07:40
  #9 (permalink)  
Antiguo 16/06/2014, 08:00
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años
Puntos: 7
Respuesta: Poner a cero los segundos que me llegan de un datetime

Cita:
Iniciado por Italico76 Ver Mensaje
Ya te entendi..... si usaras el metodo .toString() el problema es que terminarias con un string y no con un objeto tipo Date, entonces creo necesitas eso:

Código Javascript:
Ver original
  1. function resetDate(fecha)
  2. {      
  3.     return fecha.setSeconds(0);
  4. }


Te muestro como funciona:

Código Javascript:
Ver original
  1. var fecha = new Date();
  2. console.log(fecha);
  3. fecha.setSeconds(0);  // pongo 00 los segundos!!!
  4. console.log(fecha);

<< fijate lo que paso con los segundos!
Muchisimas gracias!!!!!
Así perfecto!!

Gracias
__________________
Gracias por todo;

Un saludo

Etiquetas: cero, datetime, funcion, llegan, segundos, valor
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 01:01.