Foros del Web » Programando para Internet » PHP »

convertir de texto a horas.

Estas en el tema de convertir de texto a horas. en el foro de PHP en Foros del Web. hola, estimados tengo una pequeña consulta, me encuentro trabajando con PHP, AJAX y MySql. tengo una variable llamada $hora_ini, que tiene como contenido un string------> ...
  #1 (permalink)  
Antiguo 16/12/2008, 07:51
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
convertir de texto a horas.

hola, estimados tengo una pequeña consulta, me encuentro trabajando con PHP, AJAX y MySql. tengo una variable llamada

$hora_ini, que tiene como contenido un string------> 21:50
$hora_ter, que tiene como contenido un string------> 4:15
$fecha, que tiene como contenido un string------> 2008-12-16
y quiero convertirlas a tipo hora para poder sumarlas ejemplo:

$hora_final = $hora_ini + $hora_ter

y el resultado de $hora_final ---------->2:05
y en una variable $fecha_final, si corresponde acorde a la suma cambie a 2008-12-17


como puedo convertir estos string a horas?
como puedo sumarlas una ves convertidas?
  #2 (permalink)  
Antiguo 16/12/2008, 08:14
Avatar de david_f  
Fecha de Ingreso: mayo-2007
Ubicación: Santiago De Los Caballeros, Santiago, Dominican Republic, Dominican Republic
Mensajes: 52
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: convertir de texto a horas.

Mmmm... me parece que no será tan fácil como aparenta.

Pero, porque no utilizas timestamp y luego conviertes a string. Te recomiendo que tires un ojo a las funciones de Tiempo y Fecha aqui: http://www.php.net/manual/es/ref.datetime.php
  #3 (permalink)  
Antiguo 16/12/2008, 08:35
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: convertir de texto a horas.

como hacer eso que dices, no sera mejor convertir los string a horas, existe alguna funcion para eso en php, y con otra funcion sumar las horas, ya que creo que lo de la fecha se podria manejar con un IF
  #4 (permalink)  
Antiguo 16/12/2008, 10:01
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: convertir de texto a horas.

Como te dice david_f, convierte todo a su timestamp y luego de eso ya puedes sumarlo (usa strtotime()).
El UNIX Timestamp es la cantidad de segundos desde el 1ero de Enero de 1970 hasta la fecha.

Si vas a convertir tus strings a timestamps, tienes que tomar en cuenta las HORAS:
Que strtotime('21:50'); te devolvera la cantidad de segundos desde el 1ero de Enero de 1970 hasta el dia de HOY a las 21:50.
Por eso tendras que tratar las horas de diferente manera.

http://www.php.net/manual/es/function.strtotime.php
  #5 (permalink)  
Antiguo 16/12/2008, 11:17
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: convertir de texto a horas.

miren hago esto pero el resultado no esta bien:

<?php
$thrs_p1 = "16";
$tmin_p1 = "47";
$thrs_p2 = "4";
$tmin_p2 = "29";
$hora1 = date("G:i",mktime($thrs_p1,$tmin_p1,0));
$hora2 = date("G:i",mktime($thrs_p2,$tmin_p2,0));
$hora_final = date("G:i",$hora1 + $hora2);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<p>
<input name="textfield" type="text" value="<?php echo $hora1 ?>">
</p>
<p>
<input name="textfield2" type="text" id="textfield2" value="<?php echo $hora2 ?>">
</p>
<p> <input name="txt1" type="text" id="txt1" value="<?php echo $hora_final ?>">
</p>
</body>
</html>



pero de resultado en $hora_final me da las 20:00, y no las 21:16 como corresponde, alguna sugerencia.......?????
me estara solo sumando las horas????
  #6 (permalink)  
Antiguo 16/12/2008, 11:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: convertir de texto a horas.

Código PHP:
$hora1 date("G:i",mktime($thrs_p1,$tmin_p1,0));
$hora2 date("G:i",mktime($thrs_p2,$tmin_p2,0));
$hora_final date("G:i",$hora1 $hora2); 
No puedes sumar dos horas directamente, tienes que usar el UNIX Timestamp.

$hora1 = mktime($thrs_p1, $tmin_p1, 0); //etc
Luego sumas los dos Timestamps y le das formato con date().
  #7 (permalink)  
Antiguo 16/12/2008, 13:46
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: convertir de texto a horas.

<?php
$thrs_p1 = "16";
$tmin_p1 = "47";
$thrs_p2 = "4";
$tmin_p2 = "29";
$hora1 = mktime($thrs_p1,$tmin_p1,0);
$hora2 = mktime($thrs_p2,$tmin_p2,0);
$hora_final = date("G:i",$hora1 + $hora2);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<p>
<input name="textfield" type="text" value="<?php echo $hora1 ?>">
</p>
<p>
<input name="textfield2" type="text" id="textfield2" value="<?php echo $hora2 ?>">
</p>
<p> <input name="txt1" type="text" id="txt1" value="<?php echo $hora_final ?>">
</p>
</body>
</html>


no funca me da cmo resultado 18:47...que estoy haciendo mal....????

Última edición por jetzona; 16/12/2008 a las 13:47 Razón: sorry...
  #8 (permalink)  
Antiguo 16/12/2008, 14:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: convertir de texto a horas.

Código PHP:
// Convertimos fecha y hora en timestamps
$inicial strtotime("$fecha $hora_ini");
$final strtotime("$fecha $hora_ter");
// Si la hora final es menor que la inicial entonces debe agregarse 1 dia
if($final $inicial
    
$final += 86400;
$total_horas $final $inicial;
$fecha_final $final
Ups, creo que hora_ter se refiere al total de horas y de ahi hacer el calculo de la hora final.

Código PHP:
// Convertimos fecha y hora en timestamps
 // Creamos la fecha inicial con su hora correspondiente
$inicial strtotime("$fecha $hora_ini");

// Obtenemos hora y minutos en base a la hora final hh:mm
list($hr,$min) = explode(':'$hora_ter);

// Convertimos la hora final en segundos
$agregar = ($hr 3600) + ($min 60);

// Obtenemos la fecha final agregando las horas transcurridas
// de esta forma, la fecha tambien se actualiza
$fecha_final $inicial $agregar;

// Ahora puedes obtener la fecha y hora final
list($dia$mes$anio$hr$min) = explode('-'date('d-m-y-G-i'$fecha_final));
$hora_final "$hr:$min"
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 17/12/2008 a las 14:42
  #9 (permalink)  
Antiguo 17/12/2008, 06:50
 
Fecha de Ingreso: marzo-2006
Mensajes: 202
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: convertir de texto a horas.

sorry, no entiendo, me podrias explicar....no entiendo que es lo que haces, manejas las horas y la fecha....mmmmmmmle doy vueltas, pero no entiendo, de igual forma yo hice esto:

Código PHP:
$thrs_p1 = "16";
$tmin_p1 = "47";
$thrs_p2 = "4";
$tmin_p2 = "47";
$hora1   = date("G",mktime($thrs_p1,0,0));
$hora2   = date("G",mktime($thrs_p2,0,0));
$min1    = date("i",mktime(0,$tmin_p1,0));
$min2    = date("i",mktime(0,$tmin_p2,0));
$hora_final = date("G:i",mktime($hora1+$hora2,$min1+$min2,0));
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<p>
  <input name="txt1" type="text" id="txt1" value="<?php echo $hora1 ?>">
</p>
<p>
  <input name="txt2" type="text" id="txt2" value="<?php echo $hora2 ?>">
</p>
<p>  <input name="txt3" type="text" id="txt3" value="<?php echo $min1 ?>">
</p>
<p>
  <input name="txt4" type="text" id="txt4" value="<?php echo $min2 ?>">
</p>
<p>  <input name="txt5" type="text" id="txt5" value="<?php echo $hora_final ?>">
</p>
</body>
</html>
y me funciona, pero aun no manejo que si a las 21:30 del dia 16 le sumo 3:15, sean las 00:45 del dia 17, me falta manejar las fechas aun....las horas estamos ok
  #10 (permalink)  
Antiguo 17/12/2008, 14:42
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: convertir de texto a horas.

Edite mi mensaje anterior para agregarle comentarios y veas lo que hace cada linea
__________________
- León, Guanajuato
- GV-Foto
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 07:43.