Autor Tema: restar horas  (Leído 10691 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bill

  • MiembrosReales
  • *
  • Mensajes: 28
restar horas
« : noviembre 01, 2016, 10:06:03 am »
Buenas programadores  :sur: necesito ayuda.

$dteStart = new DateTime($h_e);
        $dteEnd   = new DateTime($h_s);

        $dteDiff  = $dteStart->diff($dteEnd);
        $h_t=$dteDiff->format("%h:%i");

en este codigo me calcula la diferencia entre 2 horas pero lo que no logro es que al resultado es restar una hora al resultado

algo asi
$h_e="08:00";
$h_s="17:00";
la diferencia es de "09:00" horas pero tengo que quitar una hora ("08:00" horas) quisiera saber como hacerlo o algun condigo para hacer esa sustraccion gracias
« Última Modificación: noviembre 01, 2016, 10:15:06 am por bill »

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14583
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:restar horas
« Respuesta #1 : noviembre 01, 2016, 12:36:04 pm »
como fue? como es que podes restar dos horas pero no una? no tiene sentido. pone tu codigo mas entero que asi no se entiende. osea... si, entre las 8 horas y las 17 horas hay 9 horas de diferencia, cual es el problema?

Desconectado bill

  • MiembrosReales
  • *
  • Mensajes: 28
Re:restar horas
« Respuesta #2 : noviembre 01, 2016, 02:28:00 pm »
Un contador de horas trabajadas el cual depende de 3 turnos 4,8 y 12 horas. En el turno de 8 horas se debe tener en cuenta una hora de descanso asi que no se tiene que contar un eje seria asi: entro a las 7:00 y salio a las 16:00 se cuenta 9 horas pero se toma una hora que no trabajo asi que serian 8 horas trabajadas


manejo 3 variables
$h_e="" //hora de entrada
$h_s="" //hora de salida
$turno= //aqui toma el valor de un select y los valores son {4,8 y 12}
$h_t = ? //Horas trabajadas

dependiendo del turno hace el conteo de horas.

-el caso 4 y 12 el conteo esta bien pero el problema es en el caso 8, ya que no se tiene que contar una hora porque es descanso

switch($turno) {
    case 4:
        $dteStart = new DateTime($h_e);
        $dteEnd   = new DateTime($h_s);

        $dteDiff  = $dteStart->diff($dteEnd);
        $h_t=$dteDiff->format("%h:%i");
       
    break;
    case 8:
        $dteStart = new DateTime($h_e);
        $dteEnd   = new DateTime($h_s);

        $dteDiff  = $dteStart->diff($dteEnd);
        $h_t=$dteDiff->format("%h:%i");
       
    break;
    case 12:
        $dteStart = new DateTime($h_e);
        $dteEnd   = new DateTime($h_s);

        $dteDiff  = $dteStart->diff($dteEnd);
        $h_t=$dteDiff->format("%h:%i");
       
    break;
}

Desconectado XtremeH

  • The Communiter-
  • *
  • Mensajes: 1961
  • We must fight very hard, or die trying...
Re:restar horas
« Respuesta #3 : noviembre 01, 2016, 02:43:55 pm »
No soy un experto programando, pero, ¿por qué no simplemente le quitas una hora a la variable
Código: [Seleccionar]
$dteDiff antes de asignársela a
Código: [Seleccionar]
$h_t ??  :huh: :huh:

Desconectado bill

  • MiembrosReales
  • *
  • Mensajes: 28
Re:restar horas
« Respuesta #4 : noviembre 01, 2016, 02:57:20 pm »
eso es lo que no logro hacer como restar horas noc como va el codigo o si lleva un formato hay que convertir

intente de esta forma
Código: [Seleccionar]
    $h_t=$dteDiff-1;

pero me muestra 12:00 horas

Desconectado XtremeH

  • The Communiter-
  • *
  • Mensajes: 1961
  • We must fight very hard, or die trying...
Re:restar horas
« Respuesta #5 : noviembre 01, 2016, 03:00:00 pm »
eso es lo que no logro hacer como restar horas noc como va el codigo o si lleva un formato hay que convertir

intente de esta forma
Código: [Seleccionar]
    $h_t=$dteDiff-1;

pero me muestra 12:00 horas
Es que sólo el número 1 no te va a realizar la resta que queres hacer. Tenes que indicarle que es una hora la que queres restar. Ese 1 puede ser año, día, mes, etc etc etc. Averigua como trabajar con formate datetime para el lenguaje que estás utilizando.

Desconectado KATHYU

  • Sv Member
  • ***
  • Mensajes: 180
  • Welcome to the real world. It sucks !!!
Re:restar horas
« Respuesta #6 : noviembre 01, 2016, 03:01:53 pm »
Tanta letra por algo tan sencillo  x_x x_x

Código: [Seleccionar]
<?php
$h_e="07:00"//hora de entrada
$h_s="16:00"//hora de salida
$turno=""//aqui toma el valor de un select y los valores son {4,8 y 12}
$h_t ""//Horas trabajadas

// switch($turno) {
 //    case 4:
 //        $dteStart = new DateTime($h_e); 
 //        $dteEnd   = new DateTime($h_s); 

 //        $dteDiff  = $dteStart->diff($dteEnd);
 //        $h_t=$dteDiff->format("%h:%i");
        
 //    break;
 //    case 8:
        
$dteStart = new DateTime($h_e); 
        
$dteEnd   = new DateTime($h_s); 

        
$dteDiff  $dteStart->diff($dteEnd);
        
$h_t = ($dteDiff->format("%h:%i"))-1;
       

       
echo $h_t;
//     break;
//     case 12:
//         $dteStart = new DateTime($h_e); 
//         $dteEnd   = new DateTime($h_s); 

//         $dteDiff  = $dteStart->diff($dteEnd);
//         $h_t=$dteDiff->format("%h:%i");
        
//     break;
// }
?>

Resultado mágico: 8.00

Desconectado XtremeH

  • The Communiter-
  • *
  • Mensajes: 1961
  • We must fight very hard, or die trying...
Re:restar horas
« Respuesta #7 : noviembre 01, 2016, 03:22:39 pm »
Tanta letra por algo tan sencillo  x_x x_x

Código: [Seleccionar]
<?php
$h_e="07:00"//hora de entrada
$h_s="16:00"//hora de salida
$turno=""//aqui toma el valor de un select y los valores son {4,8 y 12}
$h_t ""//Horas trabajadas

// switch($turno) {
 //    case 4:
 //        $dteStart = new DateTime($h_e); 
 //        $dteEnd   = new DateTime($h_s); 

 //        $dteDiff  = $dteStart->diff($dteEnd);
 //        $h_t=$dteDiff->format("%h:%i");
        
 //    break;
 //    case 8:
        
$dteStart = new DateTime($h_e); 
        
$dteEnd   = new DateTime($h_s); 

        
$dteDiff  $dteStart->diff($dteEnd);
        
$h_t = ($dteDiff->format("%h:%i"))-1;
       

       
echo $h_t;
//     break;
//     case 12:
//         $dteStart = new DateTime($h_e); 
//         $dteEnd   = new DateTime($h_s); 

//         $dteDiff  = $dteStart->diff($dteEnd);
//         $h_t=$dteDiff->format("%h:%i");
        
//     break;
// }
?>

Resultado mágico: 8.00
Pero creo que precisamente quiere evitar que aparezcan las 8 horas

Desconectado KATHYU

  • Sv Member
  • ***
  • Mensajes: 180
  • Welcome to the real world. It sucks !!!
Re:restar horas
« Respuesta #8 : noviembre 01, 2016, 03:29:15 pm »
Pero creo que precisamente quiere evitar que aparezcan las 8 horas

 :huh:

Que se imprima en el navegador ?? yo hice un echo por eso, el que haga lo que quiera  :phew:

Desconectado bill

  • MiembrosReales
  • *
  • Mensajes: 28
Re:restar horas
« Respuesta #9 : noviembre 01, 2016, 03:36:30 pm »
 KATHYU: si me ha servido gracias  :drinks:  :sur:  es algo complicado para mi trabajar con horas pero gracias

Desconectado KATHYU

  • Sv Member
  • ***
  • Mensajes: 180
  • Welcome to the real world. It sucks !!!
Re:restar horas
« Respuesta #10 : noviembre 01, 2016, 03:41:22 pm »
KATHYU: si me ha servido gracias  :drinks:  :sur:  es algo complicado para mi trabajar con horas pero gracias

Bien por vos, pero eso es demasiado básico como como para llamarse un problema.  :thumbsup:

Desconectado bill

  • MiembrosReales
  • *
  • Mensajes: 28
Re:restar horas
« Respuesta #11 : noviembre 01, 2016, 03:48:01 pm »
Bien por vos, pero eso es demasiado básico como como para llamarse un problema.  :thumbsup:


es que voy iniciando con lo de la programacion por eso lo veo asi

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14583
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:restar horas
« Respuesta #12 : noviembre 01, 2016, 04:00:40 pm »
Bien por vos, pero eso es demasiado básico como como para llamarse un problema.  :thumbsup:
claro porque vos empezaste optimizando algorimos en notacion big O y resolviendo cosas como implementar un object factory usando un singleton verdad?


es que voy iniciando con lo de la programacion por eso lo veo asi
nambe tranquilo chele, que asi estuvimos todos alguna vez e incluso hoy a veces tenemos una duda que resulta ser algo simple. no te ahueves

es algo complicado para mi trabajar con horas pero gracias
no. no lo es. es relativamente sencillo. tambien tenes que centrarte en que te falta bastante por caminar. sacate de la cabeza que es algo compicado.
« Última Modificación: noviembre 01, 2016, 04:03:32 pm por g00mba »

Desconectado Charlie

  • The Communiter-
  • *
  • Mensajes: 5588
Re:restar horas
« Respuesta #13 : noviembre 01, 2016, 04:06:33 pm »
claro porque vos empezaste optimizando algorimos en notacion big O y resolviendo cosas como implementar un object factory usando un singleton verdad?
nambe tranquilo chele, que asi estuvimos todos alguna vez e incluso hoy a veces tenemos una duda que resulta ser algo simple. no te ahueves
no. no lo es. es relativamente sencillo. tambien tenes que centrarte en que te falta bastante por caminar. sacate de la cabeza que es algo compicado.

 :shock:

Y el buyin? y la falta de paciencia? Y el maltrato a los recien llegados que hacen preguntas basicas?

Quien sos vos y que hiciste con g00mba? :yao_ming:

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14583
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re:restar horas
« Respuesta #14 : noviembre 01, 2016, 04:19:54 pm »
:shock:

Y el buyin? y la falta de paciencia? Y el maltrato a los recien llegados que hacen preguntas basicas?

Quien sos vos y que hiciste con g00mba? :yao_ming:

hay una diferencia entre una pregunta p3ndeja y una pregunta de novato.