Foros del Web » Programando para Internet » PHP »

fecha escrita

Estas en el tema de fecha escrita en el foro de PHP en Foros del Web. tengo una duda q no me toma!! tengo una fecha recuperada de una base de datos q esta en formato aaaa-mm-dd osea date para poder ...
  #1 (permalink)  
Antiguo 20/08/2003, 15:58
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
fecha escrita

tengo una duda q no me toma!!
tengo una fecha recuperada de una base de datos q esta en formato aaaa-mm-dd osea date

para poder mostrar he creado unos arreglos pero ahi no es el problema....

entonces vi la funcion date y me dice q debo tener el valor en formato timestamp, por lo tanto mi campo recuperado lo concatene con "00:00:00" para q quedar en formato timestamp
y luego usea las funciones
supongamos q la fecha me quedo: "2003-08-20 00:00:00"
Código PHP:
$dia=date("w",$fecha);
#y me imprime 3

$anno=date("Y",$fecha);
#y me imprime 1969

$mes=date("m",$fecha);
#y me imprime 12 
si ven los valores no estan de acuerdo a la fecha(q en el ejemplo corresponde a hoy)

quizas no se aplica asi la funcion, por eso es mi consulta
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #2 (permalink)  
Antiguo 20/08/2003, 21:42
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

Me parece que el problema proviene del hecho de que la función date() de PHP trabaja sobre datos en formato timestamp de Unix (el cual es diferente al formato timestamp que tienes en mente). Éste formato timestamp de Unix básicamente se trata de un valor entero positivo largo que representa la cantidad de segundos transcurridos desde el amanecer del 1 de Enero de 1970 hasta una determinada fecha/hora.

Así que para tu problema se me ocurren dos tipos de soluciones. Una podría ser que separes manualmente la fecha inicial (tipo Date en la base de datos) que recibes en los diferentes valores que necesitas. Por ejemplo:

Código:
<?php

$fecha_inicial = '2003-08-20';

list ($anyo, $mes, $dia) = explode ('-', $fecha_inicial);

echo <<<FIN_SALIDA
<pre>

Año: $anyo
Mes: $mes
Dia: $dia

</pre>
FIN_SALIDA;

?>

Otra alternativa sería que continuaras usando la función date() de PHP, pero te aseguraras de obtener un valor tipo timestamp de Unix desde la base de datos. Si usaras MySQL, por ejemplo, podrías usar la función UNIX_TIMESTAMP(). Ejemplo:

Código:
SELECT UNIX_TIMESTAMP('2003-08-20 00:00:00');
Un cordial saludo
  #3 (permalink)  
Antiguo 20/08/2003, 21:49
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
em eso lo se, pero lo q quiero es yo es obtener por ejemplo que hoy 20 es lunes, por lo tanto la funcion date me devuelve un numero y ese numero equivaldria a uun indice de mi arreglo donde tengo los dias desde domingo a lunes...

por ejemplo
$dia=date("w",$fecha);
#me devuelve
echo $name_date[$dia];
#mostraria miercoles

a eso me refiero..
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #4 (permalink)  
Antiguo 20/08/2003, 22:21
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Bien, lo que deseas es contar con el valor correcto para enviar como argumento ala función date(). Necesitas un timestamp de Unix. En ese caso podrías:

(a) Como mencioné anteriormente, asegurarte de recibir un timestamp de Unix desde la base de datos misma.

(b) Convertir manualmente el dato inicial a un timestamp de Unix. Por ejemplo, podrías usar la función mktime() de PHP.

Ejemplo:

Código:
<?php

$fecha_inicial = '2003-08-20';

list ($anyo, $mes, $dia) = explode ('-', $fecha_inicial);

$dia_semana = date ('w', mktime (0, 0, 0, $mes, $dia, $anyo));

echo "La fecha $fecha_inicial corresponde al dia de la semana $dia_semana\n";

?>
Un cordial saludo
  #5 (permalink)  
Antiguo 20/08/2003, 22:33
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Solo una nota...

El TIMESTAMP no es "2003-05-05 00:00:00", ... Si no un numero de serie que representa la cantidad de segundos transcurrida desde el 1 de enero de 1970 (Unix Epoch) hasta la fecha dada...
__________________
Manoloweb
  #6 (permalink)  
Antiguo 21/08/2003, 07:50
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
ups ahi estaba mi error!! :)
me pifie con el timestamp...

gracias gente
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
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 21:03.