Foros del Web » Programando para Internet » PHP »

como comparar horas??

Estas en el tema de como comparar horas?? en el foro de PHP en Foros del Web. hola a todo el foro, hestoy haciendo un pequeño calendario y necesito comparar horas, los campos en la bd son del tipo time (00:00:00), tengo ...
  #1 (permalink)  
Antiguo 22/07/2008, 13:01
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta como comparar horas??

hola a todo el foro, hestoy haciendo un pequeño calendario y necesito comparar horas, los campos en la bd son del tipo time (00:00:00), tengo una página que muestra todos los eventos del día seleccionado dentro de una tabla que esta dividida entre medias horas, por ejemplo desde las 00:00 hasta las 00:30 desde la 00:30 hasta la 01:00 y así sigue hasta las 24:00, dentro de cada una de estas celdas quiero ir mostrando los resultados y necesitaría hacer comparaciones entre la hora de inicio, la hora final y el segmento de tiempo de cada celda, si alguien me puede ayudar se lo agradezco de antemano.

un saludo, y gracias.
  #2 (permalink)  
Antiguo 22/07/2008, 13:48
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: como comparar horas??

Espero que te pueda servir, tal vez los nombres de las variablaes son un poco confusos, pero esta funcion la tuve que hacer la semana pasada:
Código PHP:
function tiempoTranscurrido($hora_inicio,$hora_fin)
{

    
    
$horaInicio=explode(":",$hora_inicio);
    
$horaFin=explode(":",$hora_fin);    
    

    
$diferenciaEnSegundos=mktime($horaFin[0],$horaFin[1],$horaFin[2])-mktime($horaInicio[0],$horaInicio[1],$horaInicio[2]);
    
    
$minutos=round($diferenciaEnSegundos/60);
    
$segundos_sobra=$diferenciaEnSegundos%60;
    
    
$horas=round($minutos/60);
    
$minutos_sobra=$minutos%60;
    
    
$dias=0;
    if(
$horas>24)
    {
        
$dias=round($horas/24);
        
$horas_sobra=$horas%24;
        echo 
$dias." dias, ".$horas_sobra." horas, ".$minutos_sobra." minutos, ".$segundos_sobra." segundos.";
    }
    else
        echo 
$dias." dias, ".$horas." horas, ".$minutos_sobra." minutos, ".$segundos_sobra." segundos.";
    
}

tiempoTranscurrido("14:45:00","15:20:25"); 
  #3 (permalink)  
Antiguo 23/07/2008, 02:59
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo Respuesta: como comparar horas??

Muchas gracias por tu ayuda!! ahora mismo lo pruebo y mas tarde te cuento.
Gracias!
  #4 (permalink)  
Antiguo 23/07/2008, 07:25
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
De acuerdo Respuesta: como comparar horas??

Hola nuevamente, la verdad es que no se como aplicarlo..

esta es la comparacion que tendría que hacer antes de mostrar el resultado:

Código PHP:
<?php $row_eventos['hor_in_ev'] >= "00:00:00" && $row_eventos['hor_in_ev'] < "00:30:00"?>
pero claro esto tengo que hacerlo 48 veces hasta mostrar las 24 Hs. Tendría que hacer la comparacion dentro de un (bucle) while y a su vez ir generando dinámicamente por ejemplo:

Hora 0:00 - lista de eventos correspondientes
Hora 0:30 - lista de eventos correspondientes


y asi sucesivamente,...

Gracias.
  #5 (permalink)  
Antiguo 23/07/2008, 09:59
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta pruebas y mas pruebas..

hola otra vez..
No se como puedo hacer lo del while para leer los registros e ir generando tablas html por horas como he dicho en un comentario un poco más arriva, si alguien se le ocurre o sabe como hacer algo así se lo agradecería muchísimo.

saludos.
  #6 (permalink)  
Antiguo 24/07/2008, 04:17
Avatar de midpunto  
Fecha de Ingreso: enero-2004
Ubicación: España Palma de mallorca
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 0
Desacuerdo bueno, viendo que nadie dice nada.. jeje

Hola, alguna idea?, alguien?...

bueno por el momento y ya se que es medio desastre he solucionado de la siguiente forma aquí pongo el código por si a alguien le sirve:

Código PHP:
<?php require_once('../../../Connections/conect.php'); ?>
<?php  
if (!isset($_GET['fecha'])){
             
$fecha_aux date('Y-m-d');
             }else{
             
// Fecha en Nuestro Formato
             
$dtm_fechainicial=$_GET['fecha'];
             
// Creamos una lista de variables a la cual le asignamos los valores parciales de $dtm_fechainicial, divididos por el signo "/"
             
list( $dia$mes$anio) = split'[-__]'$dtm_fechainicial );
             
// reasignamos la fecha a $dtm_fechainicial con su nuevo formato
             
$dtm_fechainicial "$anio-$mes-$dia";
             
$fecha_aux $dtm_fechainicial;
                  }
?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

if (!
function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$colname_eventos "-1";
if (isset(
$_GET['usuario'])) {
  
$colname_eventos $_GET['usuario'];
}
mysql_select_db($database_conect$conect);
$query_eventos sprintf("SELECT * FROM cal_eventos WHERE user_ev = %s AND fe_ini_ev ='$fecha_aux' AND hor_in_ev >='00:00:00' AND hor_in_ev <'01:00:00' ORDER BY hor_in_ev ASC"GetSQLValueString($colname_eventos"int"));
$eventos mysql_query($query_eventos$conect) or die(mysql_error());
$row_eventos mysql_fetch_assoc($eventos);
$totalRows_eventos mysql_num_rows($eventos);

$colname_eventos11 "-1";
if (isset(
$_GET['usuario'])) {
  
$colname_eventos11 $_GET['usuario'];
}
mysql_select_db($database_conect$conect);
$query_eventos11 sprintf("SELECT * FROM cal_eventos WHERE user_ev = %s AND fe_ini_ev ='$fecha_aux' AND hor_in_ev >='11:00:00' AND hor_in_ev <'12:00:00' ORDER BY fe_ini_ev ASC"GetSQLValueString($colname_eventos11"int"));
$eventos11 mysql_query($query_eventos11$conect) or die(mysql_error());
$row_eventos11 mysql_fetch_assoc($eventos11);
$totalRows_eventos11 mysql_num_rows($eventos11);

$colname_eventos2 "-1";
if (isset(
$_GET['usuario'])) {
  
$colname_eventos2 $_GET['usuario'];
}
// hasta 24 consultas para poer rellenar cada celda con su intervalo de tiempo en horas (cosa que he intentado hacerlo mucho más simple y se que se pude pero no se como hacerlo...

//contenido html
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<table width="100%" border="0" cellpadding="2" cellspacing="1" bgcolor="#709FCF">
  <tr>
    <td colspan="2" align="center" bgcolor="#EAEAEA"><span class="Estilo5">El día seleccionado  es
      <?php  if (!isset($_GET['fecha'])){
             
$Hoy date('d-m-Y'); echo $Hoy ;
             }else{ 
             echo 
$_GET['fecha'];
                  }
?>
    </span></td>
  </tr>
  <tr>
    <td align="center" valign="top" bgcolor="#ACC8E3"><span class="Estilo1"><span class="Estilo3">0</span>.<span class="Estilo2">00</span></span></td>
    <td width="94%" bgcolor="#ACC8E3"><table width="100%" border="0" cellpadding="1">
      <tr>
        <?php
  
do { // horizontal looper version 3
?>
        <td width="103" bgcolor="#89B0D8"><span class="Estilo2"><?php echo $row_eventos['asunto_ev'];?></span> <span class="Estilo3">+</span></td>
        <?php
    $row_eventos 
mysql_fetch_assoc($eventos);
    if (!isset(
$nested_eventos)) {
      
$nested_eventos1;
    }
    if (isset(
$row_eventos) && is_array($row_eventos) && $nested_eventos++ % 3==0) {
      echo 
"</tr><tr>";
    }
  } while (
$row_eventos); //end horizontal looper version 3
?>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td align="center" valign="top" bgcolor="#ACC8E3"><span class="Estilo1"><span class="Estilo3">1</span>.<span class="Estilo2">00</span></span></td>
    <td width="94%" bgcolor="#ACC8E3" class="Estilo2"><table width="100%" border="0" cellpadding="1">
      <tr>
        <?php
  
do { // horizontal looper version 3
?>
          <td bgcolor="#89B0D8"><?php echo $row_even1['coment_ev']; ?> <span class="Estilo3">+</span></td>
          <?php
    $row_even1 
mysql_fetch_assoc($even1);
    if (!isset(
$nested_even1)) {
      
$nested_even11;
    }
    if (isset(
$row_even1) && is_array($row_even1) && $nested_even1++ % 3==0) {
      echo 
"</tr><tr>";
    }
  } while (
$row_even1); //end horizontal looper version 3
?>
      </tr>
    </table></td>
  </tr>
  
  <tr>
    
//no he podido poner el jemplo entero ya que son muchos carateres, pero bueno creo que la idea esta clara.

      </tr>
    </table></td>
  </tr>
</table>
</body>
</html>
un saludo y si alguien me quiere echar una mano se lo agradezco.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:22.