Foros del Web » Programando para Internet » PHP »

Manejo de horas

Estas en el tema de Manejo de horas en el foro de PHP en Foros del Web. Buenas tardes, espero me puedan ayudar Tengo un formulario en el cual se ingresa DiaInicio DiaFin HoraInicio HoraFin Desearia poder sacar el total de horas ...
  #1 (permalink)  
Antiguo 07/05/2010, 17:45
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 371
Antigüedad: 18 años
Puntos: 0
Manejo de horas

Buenas tardes, espero me puedan ayudar

Tengo un formulario en el cual se ingresa
DiaInicio
DiaFin

HoraInicio
HoraFin

Desearia poder sacar el total de horas trabajadas.
Por ejemplo un empleado entra el lunes a las 9:10 am y sale el martes a la 2:20 am.

Serian 17 horas con 10 minutos en total de trabajo.

Necesito poder grabar eso como 17:10 minutos tabajados

y multiplicar 17.2 a la hora y 0.287 por minuto.

El cual seria el total del pago al trabajador.(En este caso seria 295.7)
Espero me puedan ayudar.

Saludos
  #2 (permalink)  
Antiguo 07/05/2010, 18:31
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: Manejo de horas

Te recomiendo que hagas una pequeña búsqueda en este foro. Ya anteriormente han sugerido varias formas de lograr lo que estás preguntando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 07/05/2010, 18:40
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 14 años, 2 meses
Puntos: 56
Respuesta: Manejo de horas

A ver si te sirve
Código PHP:
function segundos_tiempo($segundos){
  
$minutos $segundos/60;
  
$horas floor($minutos/60);
  
$minutos2 $minutos%60;
  
$segundos2 $segundos%60%60%60;
  if(
$minutos2<10)$minutos2='0'.$minutos2;
  if(
$segundos2<10)$segundos2='0'.$segundos2;
  if(
$segundos<60){ /* segundos */
    
$resultadoround($segundos);
  }elseif(
$segundos>60 && $segundos<3600){/* minutos */
     
$resultado$minutos2.':'.$segundos2;
    }else{
/* horas */
     
$resultado"$horas : $minutos2 : $segundos_2";
 }
return 
$resultado;
}

$segundos strtotime($salida) - strtotime($entrada); 
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 07/05/2010, 18:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 10 años
Puntos: 16
Respuesta: Manejo de horas

Creo que necesitas empezar con php, empieza con lo más basico(echo) y ve poco a poco.

Tampoco es muy complejo lo que pides, pero esto es una escalera, no puedes subir si no empiezas por abajo ;)
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #5 (permalink)  
Antiguo 10/05/2010, 09:24
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 371
Antigüedad: 18 años
Puntos: 0
Respuesta: Manejo de horas

Hola, a todos.
EL codigo solo es para convertir de segondos a horas, yo noecesito un validador de horas entre dias.
Ya busque pero no encuentro en el foro.

Muchas Gracias
  #6 (permalink)  
Antiguo 10/05/2010, 11:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: Manejo de horas

Si estás almacenando la información en la base de datos lo mejor es hacerlo directamente con las funciones que te ofrece la base de datos. Ejemplo con MySQL TIMEDIFF.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 10/05/2010, 12:45
 
Fecha de Ingreso: diciembre-2001
Ubicación: Peru
Mensajes: 371
Antigüedad: 18 años
Puntos: 0
Respuesta: Manejo de horas

No puedo hacerlo en la BD pues primero debo hacer ciertas ecuaciones para calcular el pago.

mi codigo actual es este.
Código PHP:
<?php

$HoraInicio
="00:50"
$HoraFin="01:55"
//Si el costo por hora cambia se debe modificar aqui
$CostoHora=17.20;
$CostoMinuto=0.287;

$TiempoTotal=0;
$CostoTotal=0;
$AñoActual "2010";
$MesActual ="05";
$DiaActual ="09";
$DiaFinal date('d');

//Este codigo es para cuando la fecha fin se de al dia siguiente de la fecha de inicio.                    
                            
$horai=substr($HoraInicio,0,2);
                            
$mini=substr($HoraInicio,3,2);
                             
                            
$horaf=substr($HoraFin + (24 $difFechas ) ,0,2) ;
                            
$minf=substr($HoraFin,3,2);
                            
                     
                            
$ini=((($horai*60)*60)+($mini*60)/*+$segi*/);
                            
$fin=((($horaf*60)*60)+($minf*60)/*+$segf*/);
                             
                            
$dif=$fin-$ini;
                            
$difh=floor($dif/3600);
                            
$difm=floor(($dif-($difh*3600))/60);
                                                
                            
$CostoTotalParcial=($CostoHora $difh) + ($CostoMinuto *$difm);
                            
$CostoTotal round($CostoTotalParcial 100) / 100 ;

Lo que logro es multiplicar el costo de manera correcta.
Pero necesito grabar tambien que fueron 25 horas con 5 minutos. en una variable de la siguietne manera TiempoTotal = 25:05
Y eso no se como hacerlo

Saludos
  #8 (permalink)  
Antiguo 10/05/2010, 13:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: Manejo de horas

Mira este ejemplo http://www.forosdelweb.com/3386228-post4.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: horas, manejo
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:44.