Foros del Web » Programando para Internet » PHP »

Obtener solo la hora de campo datetime

Estas en el tema de Obtener solo la hora de campo datetime en el foro de PHP en Foros del Web. Buenas tardes, Tengo en una tabla un campo datetime que me guarda con este formato: 2009-04-16 11:25:09 Como la fecha está en formato distinto al ...
  #1 (permalink)  
Antiguo 16/04/2009, 13:09
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Obtener solo la hora de campo datetime

Buenas tardes,

Tengo en una tabla un campo datetime que me guarda con este formato:

2009-04-16 11:25:09

Como la fecha está en formato distinto al que utilizamos en España, he utilizado una función que encontré en desarrolloweb para pasarla a castellano pero solo me muestra la fecha y la hora pasa de ella.

La función es esta:

Código PHP:
function convierte_fecha_a_castellano($fecha){ 
    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1]; 
    return 
$lafecha


Entonces lo que me gustaría es guardar en una variable solo la hora del campo datetime y despues la anexaría a la fecha obtenida en castellano

$miHora = $row['fecha_alta'];

¿Cómo podría hacerlo si es que es posible?
Gracias.
  #2 (permalink)  
Antiguo 16/04/2009, 13:31
Avatar de deivax  
Fecha de Ingreso: marzo-2006
Mensajes: 31
Antigüedad: 18 años
Puntos: 0
Respuesta: Obtener solo la hora de campo datetime

Tenés varias opciones.
Una es extender un poco más la función que ya tenés, agregándole la hora, minutos y segundos a la expresión regular: ([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})(\ ([0-9]{2}):([0-9]{2}):([0-9]{2}))$
Entonces la función te quedaría de esta manera:
Código PHP:
function convierte_fecha_a_castellano($fecha){ 
    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})(\ ([0-9]{2}):([0-9]{2}):([0-9]{2}))?$"$fecha$mifecha); 
    
$lafecha="{$mifecha[2]}/{$mifecha[1]}/{$mifecha[0]} {$mifecha[3]}:{$mifecha[4]}:{$mifecha[5]} "
    return 
$lafecha

Otra sería convertir la fecha a formato UNIX, la cual en mi opinión es más fácil de implementar:
Código PHP:
function convertir_fecha($fecha$formato '%d/%m/%Y %H:%M:%s')
{
  
$timestamp strtotime($fecha);
  return 
strftime($timestamp$formato);

Así podés utilizar la misma función para obtener fechas en el formato que quieras, dejando como predeterminado el que más uses.
Buscá información en php.net/strtotime y php.net/strftime para más detalles.
  #3 (permalink)  
Antiguo 17/04/2009, 10:58
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Obtener solo la hora de campo datetime

Hola.

Gracias por tu ayuda.

He probado la función:

Código PHP:
function convierte_fecha_a_castellano($fecha){  
    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})(\ ([0-9]{2}):([0-9]{2}):([0-9]{2}))?$"$fecha$mifecha);  
    
$lafecha="{$mifecha[3]}/{$mifecha[2]}/{$mifecha[1]} {$mifecha[4]}:{$mifecha[5]}:{$mifecha[6]}";  
    return 
$lafecha;  

Pero el resultado que me sale es este:

06/04/2009 18:05:21:18:05

El :18:05 del final sobra, pero no se porqué sale ¿Donde puede estar el fallo?

Edito: Ya he dado con la solución. Al aplicar el formato, sobra lo que está en rojo:

ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2}) (\ ([0-9]{2}):([0-9]{2}):([0-9]{2}))?$", $fecha, $mifecha);

Gracias por la ayuda prestada
  #4 (permalink)  
Antiguo 02/12/2011, 17:34
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Obtener solo la hora de campo datetime

Gracias por los aportes, pero lo probé y daba algunos errores, le he hecho algunas modificaciones y este me anda al pelo.
Si a alguien le sirve bienvenido sea

////////////////////////////////////////////////////
//Convierte fecha y hora de mysql a normal
////////////////////////////////////////////////////
function convierte_fecha_a_castellano($fecha){
ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})?$", $fecha, $mifecha);
$lafecha="{$mifecha[3]}/{$mifecha[2]}/{$mifecha[1]} {$mifecha[4]}:{$mifecha[5]}:{$mifecha[6]} ";
return $lafecha;
}
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 01:38.