Foros del Web » Programando para Internet » PHP »

Función para mostrar fecha con horas

Estas en el tema de Función para mostrar fecha con horas en el foro de PHP en Foros del Web. Hola. Tengo una función que me muestra la fecha en Castellano, sin embargo no soy capaz de lograr que me la muestra con la hora ...
  #1 (permalink)  
Antiguo 18/10/2018, 13:20
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Función para mostrar fecha con horas

Hola.

Tengo una función que me muestra la fecha en Castellano, sin embargo no soy capaz de lograr que me la muestra con la hora y minutos:

Código PHP:
function fechasConHoras ($fecha) {

  
$fecha substr($fecha0,25);
  
$numeroDia date('d'strtotime($fecha)); 
  
$mes date('F'strtotime($fecha));
  
$anio date('Y'strtotime($fecha)); 
  
$hora date('H:i'strtotime($fecha)); 
  
$meses_ES = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");
  
$meses_EN = array("January""February""March""April""May""June""July""August""September""October""November""December");
  
$nombreMes str_replace($meses_EN$meses_ES$mes); 

  return 
$numeroDia." de ".$nombreMes." de ".$anio"," .$hora;
  

En el archivo de para mostrarlo lo llamo así:

<p class="pubdate">
Código PHP:
<?php                                                            
$fecha 
date ('d-m-Y-H:i'$value["data"]);                       
echo 
fechasConHoras($fecha); 
?>
<p>

Sin embargo no termina de coger bien las horas y minutos, en el campo de la tabla mysql viene con un valor integer por ejemplo así:

1539740681 (que debería mostrar esta fecha) -> 17 octubre 2018,03:44

pero no me da el valor correcto falllando solo en las horas y minutos, por ejemplo a veces así 17 de Octubre de 2018,05:44 y otras 17 de Octubre de 2018,00:44

¿Es correcta la manera?

Saludos.
  #2 (permalink)  
Antiguo 18/10/2018, 19:24
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Función para mostrar fecha con horas

Aunque la función no es como yo la hubiera querido me parece que cumple su cometido

el problema que tienes con las horas, debe ser y casi seguro que es porque nunca definiste la zona horaria., tu PC puede tener una zona distinta a la del servidor y por eso ves que no concuerda., definela en tu archivo y veras como obtienes el mismo resultado en ambos lados.

Código PHP:
Ver original
  1. date_default_timezone_set('America/Los_Angeles');

http://php.net/manual/es/timezones.php
  #3 (permalink)  
Antiguo 18/10/2018, 21:34
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Función para mostrar fecha con horas

Debes configurar bien tu servidor, estas usando otro huso horario.
  #4 (permalink)  
Antiguo 19/10/2018, 05:00
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Función para mostrar fecha con horas

Cita:
Iniciado por ArturoGallegos Ver Mensaje

el problema que tienes con las horas, debe ser y casi seguro que es porque nunca definiste la zona horaria., tu PC puede tener una zona distinta a la del servidor y por eso ves que no concuerda., definela en tu archivo y veras como obtienes el mismo resultado en ambos lados.

Código PHP:
Ver original
  1. date_default_timezone_set('America/Los_Angeles');

http://php.net/manual/es/timezones.php
Gracias, aunque por ahora no me ha cambiado el registro voy a ver si con los nuevos ya los guarda en la hora correcta ya que puede ser que en la web original tenga otro horario incluso al que yo uso, pero he hecho pruebas y las zonas horarias me las cambia correctamente.

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Aunque la función no es como yo la hubiera querido me parece que cumple su cometido
¿Cual o que otra manera me recomendarías?

Muchas gracias.

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Debes configurar bien tu servidor, estas usando otro huso horario.
Muchas gracias alvaro_trewhela, horario cambiado.
  #5 (permalink)  
Antiguo 19/10/2018, 09:38
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Función para mostrar fecha con horas

Checate esta comparación
Código PHP:
Ver original
  1. <?php
  2. date_default_timezone_set('America/Los_Angeles');
  3. $data = 1539740681;
  4.  
  5. // esto es lo que tienes ahora
  6. function fechasConHoras ($fecha) {
  7.  
  8.   $fecha = substr($fecha, 0,25);
  9.   $numeroDia = date('d', strtotime($fecha));
  10.   $mes = date('F', strtotime($fecha));
  11.   $anio = date('Y', strtotime($fecha));
  12.   $hora = date('H:i', strtotime($fecha));
  13.   $meses_ES = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  14.   $meses_EN = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  15.   $nombreMes = str_replace($meses_EN, $meses_ES, $mes);
  16.  
  17.   return $numeroDia." de ".$nombreMes." de ".$anio. "," .$hora;
  18.  
  19. }
  20.  
  21. $fecha = date ('d-m-Y-H:i', $data);
  22. echo fechasConHoras($fecha);
  23.  
  24. // esto me parece mejor, pero es solo por reducir codigo
  25. echo "<br>";
  26. // -------------
  27.  
  28.  
  29. function fechaHoras($time){
  30.     $meses = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  31.     return date('d', $time) . ' de ' . $meses[(date('n', $time) - 1)] . ' de ' . date("Y, H:i", $time);
  32. }
  33.  
  34. echo fechaHoras($data);




Por cierto mientras probaba, note que este guion medio que tienes entre la Y y la H 'd-m-Y-H:i'
Hace que la hora cambie y te la de errónea., deberías quitarla, nunca he visto que usen un formato de fecha con guion en esa parte
  #6 (permalink)  
Antiguo 19/10/2018, 10:11
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Función para mostrar fecha con horas

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Por cierto mientras probaba, note que este guion medio que tienes entre la Y y la H 'd-m-Y-H:i'
Hace que la hora cambie y te la de errónea., deberías quitarla, nunca he visto que usen un formato de fecha con guion en esa parte
Pues justo al quitar ese guión ahora va la hora perfecta.

Código PHP:
<?php                                                            
$fecha 
date ('d-m-Y H:i'$value["data"]);                     
echo 
fechasConHoras($fecha); 
?>
Incluso comparando las dos ejemplos en el primero con guión me daba ahora una hora distinta a la verdadera:

16 de Octubre de 2018,11:44 (con guión)
16 de Octubre de 2018, 18:44 (normal)

En cuanto a las funciones la segunda mucho mejor y menos código sin embargo si la llevo al otro archivo me da este error:

Código:
Notice: A non well formed numeric value encountered in C:\xampp\htdocs\web\views\funciones\fechas.php on line 142

linea 142 -> return date('d', $time) . ' de ' . $meses[(date('n', $time) - 1)] . ' de ' . date("Y, H:i", $time);
Voy a ver de que se trata, de nuevo muchas gracias por tu ayuda.
  #7 (permalink)  
Antiguo 19/10/2018, 10:54
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Función para mostrar fecha con horas

Alguna razón para no usar INTL?
Código PHP:
Ver original
  1. function localized_datetime( int $from_timestamp ) {
  2.     $date_time = (new DateTime())->setTimestamp( $from_timestamp );
  3.  
  4.     $intlDateFormatter = new IntlDateFormatter(
  5.         'es_ES',
  6.         IntlDateFormatter::NONE,
  7.         IntlDateFormatter::NONE,
  8.         'America/Mexico_City',
  9.         IntlDateFormatter::GREGORIAN,
  10.         "d 'de' MMMM YYYY, HH:mm"
  11.     );
  12.  
  13.     return  $intlDateFormatter->format( $date_time );
  14. }
  15.  
  16. echo localized_datetime(1539740681);
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Última edición por hhs; 19/10/2018 a las 17:28
  #8 (permalink)  
Antiguo 05/12/2018, 20:39
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Función para mostrar fecha con horas

Hola de nuevo, perdón por la tardanza en responder a este tema.

La verdad es que no conocía este método, lo probé pero no me funcionaba o no se si lo hice correctamente.

Por ejemplo así de pronto me devolvía este error:

Fatal error: Uncaught Error: Class 'IntlDateFormatter' not found in....

Por cierto, intenté responder varias veces anteriormente a este tema pero casi era imposible por la carga del foro y un código de respuesta con captcha y solia quedarse en blanco... y ahora de pronto veo que el foro vuela. ¿Se ha vuelto a mejorar o es que he tenido suerte?

Gracias hhs, saludos.
  #9 (permalink)  
Antiguo 05/12/2018, 21:46
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Función para mostrar fecha con horas

Hola solo tienes que instalar esa extensión en tu servidor de pruebas y en tu hosting aun que en los hosting debe de estar habilitada
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 06/12/2018, 12:44
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Función para mostrar fecha con horas

Hola de nuevo.

Pues he quitado en mi servidor xampp, en el archivo php.ini en concreto en esta línea ;extension=php_intl.dll el ";" y listo.

extension=php_intl.dll

Código PHP:
echo localized_datetime(1539740681); /* Muestra correctamente -> 16 de octubre 2018, 20:44 */ 
De ahí ya lo aplico al resto también, gracias de nuevo.

Saludos.

Etiquetas: fecha, horas, mysql, tabla
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 03:58.