Foros del Web » Programando para Internet » PHP »

Restar 2 horas

Estas en el tema de Restar 2 horas en el foro de PHP en Foros del Web. buenos estoy asiendo un sistema en donde tengo que restar la "hora acordada" y la "hora Real" y eso dejarlo en un textfield. Ejemplo teórico: ...
  #1 (permalink)  
Antiguo 28/10/2013, 06:12
 
Fecha de Ingreso: diciembre-2012
Ubicación: Viña del Mar
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Restar 2 horas

buenos estoy asiendo un sistema en donde tengo que restar la "hora acordada" y la "hora Real" y eso dejarlo en un textfield.
Ejemplo teórico:

Hora Acordada: "aquí va un textfield, donde ingreso la hora"

Hora Real: "aquí va un textfield, donde ingreso la hora"

Resto: "es la resta de Hora Acordada y Hora Real, esto tendría que almacenar en un Textfield automáticamente"

Ejemplo Practico

Hora Acordada: 22:22

Hora Real: 23:22

Resto: -01:00. Automáticamente tendría que calcular.


porfa si alguien tiene algún ejercicio me podrían ayudar por favor, soy nuevo en esto y quiero aprender.
Gracias por todo.
  #2 (permalink)  
Antiguo 28/10/2013, 10:20
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 6 meses
Puntos: 14
¿La resta la quieres hacer en el servidor, es decir, con PHP? ¿O directamente en el cliente, es decir, con javascript?

De todas formas mírate esto:
Diferencia entre fechas y horas en PHP:
http://www.php.net/manual/es/datetime.diff.php

Métodos de fechas en Javascript:
http://www.w3schools.com/jsref/jsref_obj_date.asp
En Javascript parece ser que no hay una función o método predefinido de diferencia entre fechas.

Podrías crear una instancia de date y luego llamar a los métodos .getHours y .getMinuts de esta:
Código Javascript:
Ver original
  1. var fecha1 = new Date(2000, 1, 1, 22, 22, 0, 0);
  2. var fecha2 = new Date(2000, 1, 1, 23, 22, 0, 0);
  3. var diferenciaHoras=fecha1.getHours() - fecha2.getHours();
  4. var diferenciaMinutos=fecha1.getMinutes() - fecha2.getMinutes();
  5. //Muestra el resultado en el textfield
  6. document.getElementById("id_de_tu_textfield").value=diferenciaHoras+":"+diferenciaMinutos;

Otra opción con Javascript, diría que más sencilla sería utilizar split con los valores de las 2 horas:
http://www.w3schools.com/jsref/jsref_split.asp

Disculpa, el ejemplo de js que he puesto no es del todo correcto, al restar los minutos, si la fecha2 tiene más minutos que la fecha1, devolverá un valor negativo. Lo que habrá que hacer en ese caso será restar 1 a la hora de diferencia y los minutos de diferencia serán 60 - valor negativo de la diferencia entre minutos.
__________________
¡Mira mis tutoriales web!

Última edición por Triby; 28/10/2013 a las 13:34
  #3 (permalink)  
Antiguo 28/10/2013, 22:41
 
Fecha de Ingreso: diciembre-2012
Ubicación: Viña del Mar
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Restar 2 horas

disculpa Crazylegs, creo que tu aporte es valioso pero la verdad es que tengo muy pocos conocimientos en el área de la programación y necesitaba mas ejemplo prácticos que teoría.
No mal-agradezco tu info pero no entiendo mucho de enviar parametros en php, y si tienes algun ejemplo de pasar paramentros seria de mucha ayuda, ya que podria empezar de ahí.
Saludos y gracias
  #4 (permalink)  
Antiguo 29/10/2013, 06:33
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 6 meses
Puntos: 14
Respuesta: Restar 2 horas

Pues precisamente el otro día escribi una entrada en mi blog sobre como recoger datos de un formulario en PHP.

Recoger datos de un formulario en PHP

Espero que te sirva de ayuda...pero estás seguro de que lo quieres hacer con PHP? Porque para ejecutar PHP necesitarás un servidor web que lo soporte.

No sé si te han pedido hacerlo en el servidor para enviarlo a algún sitio, o solo que muestre el resultado de la resta.
__________________
¡Mira mis tutoriales web!
  #5 (permalink)  
Antiguo 29/10/2013, 09:17
 
Fecha de Ingreso: diciembre-2012
Ubicación: Viña del Mar
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Restar 2 horas

solo Necesito que muestre el resultado de la resta

Saludos y gracia
  #6 (permalink)  
Antiguo 29/10/2013, 11:38
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 6 meses
Puntos: 14
Respuesta: Restar 2 horas

Partiendo de la base que tienes un HTML similar a este:
Código HTML:
Ver original
  1. <input type="text" id="hora_acordada">
  2. <input type="text" id="hora_real">
  3. <input type="text" id="resultado">
  4. <input type="button" onclick="javascript:restarFechas();">

Dentro de la etiqueta HEAD de HTML defines la función:
Código Javascript:
Ver original
  1. function restarFechas(){
  2.     var horaAcordada = document.getElementById("hora_acordada").value;
  3.     var horaReal = document.getElementById("hora_real").value;
  4.     //Separa las horas y los minutos en un array(también llamado arreglo o vector) de 2 posiciones, separandolo por el carácter de los ":".
  5.     var arrayHoraAcordada= horaAcordada.split(":");
  6.     //Separa las horas y los minutos en un array(también llamado arreglo o vector) de 2 posiciones, separandolo por el carácter de los ":".
  7.     var arrayHoraReal= horaReal.split(":");
  8.     //El parseInt es necesario para convertir el string devuelto por el split a un número entero para poder realizar operaciones matemáticas.
  9.     var diferenciaHoras = parseInt(arrayHoraAcordada[0]) - parseInt(arrayHoraReal[0]);
  10.     var diferenciaMinutos = parseInt(arrayHoraAcordada[1]) - parseInt(arrayHoraReal[1]);
  11.     //Aquí hay que comprobar que los minutos no sean negativos, si es así, hay que hacer lo que comentaba anteriormente.
  12.     if(diferenciaMinutos<0){
  13.         //.Esta parte seguro que eres capaz de hacerla tú :)
  14.     }
  15.     //Muestra el resultado en el textfield de abajo
  16.     document.getElementById("resultado").value=diferenciaHoras+":"+diferenciaMinutos;
  17. }

Si no conoces los array mirate esto o busca en google arrays javascript.

Espero que te sirva de ayuda.
__________________
¡Mira mis tutoriales web!

Etiquetas: horas, restar
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 11:18.