Foros del Web » Programando para Internet » PHP »

cambiar formato fecha

Estas en el tema de cambiar formato fecha en el foro de PHP en Foros del Web. Quiero cambiar el formato que tengo en mi db que es asin 0000-00-00 por otro que es asin LUNES 19 de marzo de 2011 pero ...
  #1 (permalink)  
Antiguo 19/05/2011, 04:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
cambiar formato fecha

Quiero cambiar el formato que tengo en mi db que es asin 0000-00-00 por otro que es asin LUNES 19 de marzo de 2011 pero no lo consigo por un lado tengo el tipo de formato que tengo guardado en una variable $fecha por otro lado tengo el codigo que muestra la fecha tal y como sale de la db pero quiero ponerle el valor de $fecha

codigo para mostrar el valor de fecha que hay en mi db:
Código PHP:
Ver original
  1. if (mysql_num_rows($registros) == 0) {
  2.     echo '<h1>No hay datos</h1>';
  3. } else {
  4.     $i = '';
  5.    while($row=mysql_fetch_assoc($registros)){
  6.       if ($i != $row['fecha']) {
  7.             $i = $row['fecha'];
  8.          echo $i
  9.         }

y este es el codigo con el formato que quiero:
Código PHP:
Ver original
  1. $dias[1]="LUNES";
  2. $dias[2]="MARTES";
  3. $dias[3]="MIERCOLES";
  4. $dias[4]="JUEVES";
  5. $dias[5]="VIERNES";
  6. $dias[6]="SABADO";
  7. $dias[7]="DOMINGO";
  8. $mes[1]='enero';
  9. $mes[2]='febrero';
  10. $mes[3]='marzo';
  11. $mes[4]='abril';
  12. $mes[5]='mayo';
  13. $mes[6]='junio';
  14. $mes[7]='julio';
  15. $mes[8]='agosto';
  16. $mes[9]='septiembre';
  17. $mes[10]='octubre';
  18. $mes[11]='noviembre';
  19. $mes[12]='diciembre';
  20. $d=$dias[date('N')];
  21. $m=$mes[date('n')];
  22. $timestamp=time();
  23. $dn=date('j',$timestamp);
  24. $an=date('o',$timestamp);
  25.  
  26. $fecha= "$d $dn de $m de $an" ;

y no consigo unirlos para mostrar el formato $fecha
alguna ayuda

Última edición por pithon; 19/05/2011 a las 04:34
  #2 (permalink)  
Antiguo 19/05/2011, 04:57
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: cambiar formato fecha

Vaaamos a ver. Has abierto en estos días varios post con la misma duda de como cambiar la fecha.
Usa ese mismo post, no abras otros con lo mismo. Si lo la respuestas que te dan no las entiende pregunta ahí mismo.

En php puedes cambiar el formato con date_format(), pero ten en cuenta que el valor que guardes en tu tabla debe ser igual al tipo del campo. No es lo mismo date que datetime o un varchar. Si no, los valores los puede guardar mal, o no de la forma que quieres.

Por cierto podrías hacer esos arrays mucho más pequeños... Mejor 2 líneas que 19

Un saludo
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #3 (permalink)  
Antiguo 19/05/2011, 05:11
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

IEKK gracias por contestar pero en los post que postee antes ya me resolvieron dudas aqui son otras dudas parecidas pero son otras yo queria guardar el formato $fecha (arriba lo postee ) en mi db y me aconsejaron que no lo hiciera .

en resumen en el post que postee arriba me muestra la fecha con $i pero claro este formato 0000-00-00 como tendria que hacer para que me muestre el formato $fecha que postee abajo
podrias ayudarme.
y si me dice como hacer lo del array te lo agradeceria.
  #4 (permalink)  
Antiguo 19/05/2011, 05:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

¿Y por qué no pones un campo en la BD de tipo varchar y guardas la variable $fecha como tú la quieres?. No sé que problema hay en eso.
  #5 (permalink)  
Antiguo 19/05/2011, 05:17
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

De todas formas, con la función explode() puedes dividir una cadena en trozos indicándole el caracter divisor.

$array_fecha=explode("-", $i);

Ahora, en array_fecha[0] tendrás "0000", en $array_fecha[1] tendrás "00", etc, y entonces haces las modificaciones para conseguir el formato que quieres. No sé si esto te puede valer.
  #6 (permalink)  
Antiguo 19/05/2011, 05:19
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: cambiar formato fecha

Cita:
Iniciado por pithon Ver Mensaje
en resumen en el post que postee arriba me muestra la fecha con $i pero claro este formato 0000-00-00 como tendria que hacer para que me muestre el formato $fecha que postee abajo
podrias ayudarme.
y si me dice como hacer lo del array te lo agradeceria.
Pero si ya te respondí que tenías que tener en cuenta el tipo de dato que guardas en la BD. ¿Por qué no lo cambias a un varchar y ya está? O bien lo dejas como datetime y al mostrarlo en tu web usas php para cambiar el formato

Cita:
Iniciado por IEKK Ver Mensaje
No es lo mismo date que datetime o un varchar. Si no, los valores los puede guardar mal, o no de la forma que quieres.

Por cierto podrías hacer esos arrays mucho más pequeños... Mejor 2 líneas que 19
En cuanto al array... Lo primero es que podrías echarle un ojito al manual para ver todas las formas en las que los puedes usar.

P.E:
Código PHP:
$arr = array('1''Enero''coche''Array''Dom');
echo 
$arr[1]; //Enero 
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 19/05/2011, 05:21
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

me aconsejaron que no lo hicera por el tema de si luego tenia que jugar con esas fechas como ordenarlas fechas, buscarlas
podras ayudarme
  #8 (permalink)  
Antiguo 19/05/2011, 05:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

pithon, lee mi respuesta donde te decía lo de la función explode(), a ver si eso te puede valer.

Y para lo de los arrays de dias y meses:

$dias = array("", "LUNES", "MARTES", ......);

y para los meses igual.
  #9 (permalink)  
Antiguo 19/05/2011, 05:27
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

Cita:
Pero si ya te respondí que tenías que tener en cuenta el tipo de dato que guardas en la BD. ¿Por qué no lo cambias a un varchar y ya está? O bien lo dejas como datetime y al mostrarlo en tu web usas php para cambiar el formato
IEKK pero este es mi problema que no se aplicar el codigo php que cree para darle el formato que yo quiero al buche while que me muestra las fechas que tengo en mi base de dato por otro lado tienes razon me mirare lo del array pero lo otro no lo consigo y cambiar el campo date por un varchar o algo asin me lo desaconsejaron por temas de luego tener que jugar con fechas
  #10 (permalink)  
Antiguo 19/05/2011, 05:33
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

gracias Nexus10 por contestar seguro que si que me vale pero a mi me gustaria hacerlo con strtotime pero no se aplicarlo la forma que lo hice yo no salia el formato bien salia a medias
  #11 (permalink)  
Antiguo 19/05/2011, 05:38
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

Mirando la explicación dela función strtotime(), que no me acordaba, he visto esta otra función, que parece que te puede servir:

Sobre las fechas

Mira a ver como te va.
  #12 (permalink)  
Antiguo 19/05/2011, 05:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

nexus si son parecidas pero mi problema es que no consigo aplicarla en mi codigo arriba posteado
  #13 (permalink)  
Antiguo 19/05/2011, 05:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

Otra opción que puedes tener es en vez de recuperar la fecha completa de la base de datos, recuperarla a trozos.

Suponiendo que tengas un campo en la BD que se llame fecha, sería algo así:

SELECT YEAR(fecha) AS annio, MONTH(fecha) AS mes, DAY(fecha) AS dia FROM tabla ...

No sé si esto podría funcionar, no lo he probado.
  #14 (permalink)  
Antiguo 19/05/2011, 05:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: cambiar formato fecha

No sé cual será tu problema cuando dices que no sabes aplicarlo a tu código. Probablemente sea que no sabes como ponerlo dentro del while. Lo que se hace en estos casos es poner la función en otro lado y llamarla dentro del while, así tendrías el código más ordenado y te sería más fácil. Sería así:

Código PHP:
while($row=mysql_fetch_assoc($registros)){
      
$i $row['fecha']);
      
$fecha cambiarFormatoFecha($i);
      echo 
$fecha;

Ahora, en un fichero que se llame, por ejemplo, funciones.php, irías poniendo el código de todas las funciones que vayas implementando. En este caso tendrías:

Código PHP:
function cambiarFormatoFecha($i){
  
//Aquí vendría el código para dar a la fecha el formato que se quiera.
  
return $fecha;

En el fichero donde tienes el while tendrías que poner al inicio:

include "funciones.php";


No sé si con esto te estoy liando más, pero esto es una buena forma de programar. No estaría mal que practicaras un poco con esto.
  #15 (permalink)  
Antiguo 19/05/2011, 06:21
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 13 años
Puntos: 10
Respuesta: cambiar formato fecha

Nexus10 gracias era eso no sabia como hacer esa funcion muchas gracias y saludos

Etiquetas: fecha, formato
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 14:22.