Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
Formato de fechas

Bueno tengo una duda estoy empezando a probar php y mysql, me surge esta duda, las fechas en mysql estan guardadas en formato Y-m-d ahora bien como puedo hacer para formatearla d-m-Y, tengo el siguiente codigo pero en la fecha me despliega el 01-01-1970.

Código PHP:
$conn mysql_connect($dbhost$dbuser$dbpass) or die  ('Error connecting to mysql');
          
mysql_select_db($dbname,$conn);
          
// Aqui voy a generar la tabla de las actualizaciones
          
$result mysql_query("SELECT id, fecha, descripcion, modulo FROM kip_updatelog order by id");
          echo 
"<div align=center>";
          echo 
"<table>";
          echo 
"<tr><th>ID</th><th width=100>Fecha</th><th>Descripcion</th><th>Modulo</th></tr>";
          while (
$row mysql_fetch_array($result,MYSQL_ASSOC)) {
             echo 
"<tr>";
             echo 
"<td>".$row{'id'}."</td>";
             echo 
"<td>".date('d/m/Y',$row{'fecha'})."</td>";
             echo 
"<td>".$row{'descripcion'}."</td>";
             echo 
"<td>".$row{'modulo'}."</td>";
             echo 
"</tr>";
          }
          echo 
"</table>";
          
          echo 
"</div>";
          
mysql_close($conn); 
Responder Con Cita
  #2  
Antiguo 18-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo que pasa es que la función "date()" requiere como segundo parámetro una "marca de tiempo" (un "timestamp") y no le vale con la fecha en el formato en que la guarda MySQL, en este caso. Aquí te dejo un par de métodos de cierta clase "DateUtils", que, tal vez puedas aprovechar:

Código PHP:
  /**
   * Decode a datetime MySQL format into an Array.
   *
   * This method decode a datetime in MySQL format into an
   * Array that contain all Year, Month, Day, Hour, Minutes
   * and Seconds in their fields.
   *
   * @static
   * @access public
   * @param $mysqlDatetime String datetime value in MySQL format
   * @return Array Decoded MySQL datetime
   *
   */
  
public static function DecodeMySQLDateTime($mysqlDatetime){
    return array(
      
'year' => (int)substr($mysqlDatetime04),
      
'month' => (int)substr($mysqlDatetime52),
      
'day' => (int)substr($mysqlDatetime82),
      
'hour' => (int)substr($mysqlDatetime112),
      
'minutes' => (int)substr($mysqlDatetime142),
      
'seconds' => (int)substr($mysqlDatetime172)
    );
  }

  
/**
   * Get the UNIX timestamp representation of a MySQL datetime.
   *
   * This method convert a MySQL date time in the UNIX timestamp.
   *
   * @static
   * @access public
   * @param $mySqlDatetime String MySQL datatime to be converted
   * @return Integer UNIX timestamp representation of MySQL the datatime
   *
   */
  
public static function MySQLDatetimeToTimestamp($mySqlDatetime){
    
$d self::DecodeMySQLDateTime($mySqlDatetime);
    if(
is_array($d)){
      return 
mktime($d['hour'], $d['minutes'], $d['seconds'],
                     
$d['month'], $d['day'], $d['year']);
    }else{
      return 
0;
    }
  } 
Una vez tengas el "timestamp" ya sí puedes usar la función "date()".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 18-03-2009
Avatar de Kipow
Kipow Kipow is offline
Miembro
 
Registrado: abr 2006
Ubicación: Guatemala
Posts: 329
Poder: 19
Kipow Va por buen camino
ok, gracias. me imagine que seria algo mas facil jeje pero bueno esto lo voy a incluir dentro de mis librerias comunes.
Responder Con Cita
  #4  
Antiguo 18-03-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno, lo cierto es que son las funciones que yo estoy usando ahora mismo en cierto proyecto, pero, no dudo que pudiera hacerse de otra forma... sobre todo teniendo en cuenta los cambios con PHP 5, igual algún compañero nos da otra idea.

Por otro lado, viendo uno de los métodos que he copiado, encuentro cierta condición innecesaria, ahora mismo... lo dejaría de este modo:

Código PHP:
  public static function MySQLDatetimeToTimestamp($mySqlDatetime){
    
$d self::DecodeMySQLDateTime($mySqlDatetime);
    return 
mktime(
      
$d['hour'], $d['minutes'], $d['seconds'],
      
$d['month'], $d['day'], $d['year']
    );
  } 
Ah, otra cosa. No sé si te interesará o no, pero, MySQL cuenta con registros del tipo "timestamp", de modo que, si se usaran estos, directamente, podría usarse la función "date()". Sólo lo comento por si acaso.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formato de Numeros y Fechas jcarteagaf Varios 1 08-11-2007 19:03:45
Formato de Fechas luiz_leo Firebird e Interbase 3 27-07-2007 21:06:45
Formato de Fechas comba OOP 1 12-07-2007 19:14:00
formato de fechas SQL Barzaugc SQL 3 26-06-2005 11:54:23
Formato de fechas en FireBird 1.5 defcon1_es Firebird e Interbase 1 02-04-2004 17:02:52


La franja horaria es GMT +2. Ahora son las 00:43:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi