Foros del Web » Programando para Internet » PHP »

funcion date()

Estas en el tema de funcion date() en el foro de PHP en Foros del Web. hola, pues ná, estoy utilizando la función date y todo me funciona bien gracias a un scriptillo que tenia guardado por ahi que publicó cluster ...
  #1 (permalink)  
Antiguo 04/03/2003, 13:51
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 22 años, 7 meses
Puntos: 0
funcion date()

hola, pues ná, estoy utilizando la función date y todo me funciona bien gracias a un scriptillo que tenia guardado por ahi que publicó cluster hace como dos años, jejeje, pero el caso es que mi hosting está en USA, y a mi me interesa que me marque la hora local de españa, no la de GMT-5.

Código PHP:
<?php

function fecha_ahora (){
$meses=array(1=>"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$dias=array(1=>"Lunes","Martes","Miercoles","Jueves","Viernes","Sábado","Domingo");
$fecha_ahora_diaNom date ("w");
$fecha_ahora_diaNum date ("j");
$fecha_ahora_mes date ("n");
$fecha_ahora_year date ("Y");
$fecha_ahora_hora date ("H:i:s a");
$fecha_ahora $dias[$fecha_ahora_diaNom].", ".$fecha_ahora_diaNum." de ".$meses[$fecha_ahora_mes]." de ".$fecha_ahora_year.", a las ".$fecha_ahora_hora;
return 
$fecha_ahora;
}

$hoy=fecha_ahora();
echo 
"Hoy es: ".$hoy;

?>
y SI QUE HE MIRADO EN EL MANUAL EN LINEA Y EN INGLÉS DE PHP.NET, pero me lío entre el inglés y los comentarios de tanta gente posteando código cada uno diciendo cosas diferentes......


Bueno, gracias!!
  #2 (permalink)  
Antiguo 04/03/2003, 14:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para solventar el "problemilla" habria que generar la fecha/hora con la diferencia horaria para poder usarlo en los date() (en su segundo parametro q en el caso del ejemplo si se omite se toma el time() actual del servidor...

Ya puestos si usamos las funcinoes de hora en formato GMT nos envitamos hacer pruebas de a ver donde está el servidor para ver su diferencia horaria .. Tomando como referenica la hora GMT se puede ajustar la diferencia horaria (sea +horas o -horas con respecto al 0 q sería la hora GMT)

Usé mktime() (bueno si version GMT gmmktime()) .. Tambien se podria usar time() y hacer el cálculo de los segundos que hay en la diferencia horaria .. para sumarselo o restarselo segun corresponda ...

Código PHP:
<?php

function fecha_ahora_gmt ($dif_gtm=0){
$meses=array(1=>"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$dias=array(1=>"Lunes","Martes","Miercoles","Jueves","Viernes","Sábado","Domingo");

$fecha_gmt=gmmktime(gmdate("H")+$dif_gtm,gmdate("i"),gmdate("s"),gmdate("n"),gmdate("j"),gmdate("Y"));

$fecha_ahora_diaNum gmdate ("j",$fecha_gmt);
$fecha_ahora_diaNom gmdate ("w");
$fecha_ahora_mes gmdate ("n",$fecha_gmt);
$fecha_ahora_year gmdate ("Y",$fecha_gmt);
$fecha_ahora_hora gmdate ("H:i:s a",$fecha_gmt);
$fecha_ahora $dias[$fecha_ahora_diaNom].", ".$fecha_ahora_diaNum." de ".$meses[$fecha_ahora_mes]." de ".$fecha_ahora_year.", a las ".$fecha_ahora_hora;
return 
$fecha_ahora;
}

$dif_gtm=0// diferencia horaria con respecto a la hora GTM
$hoy=fecha_ahora_gmt($dif_gtm);
echo 
"Hoy es: ".$hoy;

?>
De esta forma .. tomando las horas en formato GMT se puede hacer facilmente algo como lo que hace este foro sobre personalizar las fechas que muestres ..


Un saludo,

Última edición por Cluster; 04/03/2003 a las 16:03
  #3 (permalink)  
Antiguo 04/03/2003, 14:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Podrias reconstruir la fecha/hora para GMT+1 (españa) con mktime().
Podria ser algo asi:
Código PHP:
$fecha_gmt1=mktime(date('H')+6date('i'),date('s'),date('m'),date('d'),date('Y'));
// despues usamos $fecha_gmt1 como segundo parametro de date()
$fecha_ahora_diaNom date ("w",$fecha_gmt1);
$fecha_ahora_diaNum date ("j",$fecha_gmt1); 
creo yo. Tambien existe la funcion gmdate() que te da los datos GMT.

No lo he probado, pero segun dice la teoria deberia funcionar. Acuerdate de hacer pruebas cuando el servidor esta en un dia y tu (GMT+1) estas en el siguiente.

Ya me conteras si te ha servido.

Suerte.

PD:¿Sabes que el manual tambien esta en español?

[EDITADO]
Va, olvida mi mensaje y quedate con el codigo de Cluster.
[/EDITADO]
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 04/03/2003 a las 14:35
  #4 (permalink)  
Antiguo 04/03/2003, 19:51
Avatar de kaiowas  
Fecha de Ingreso: septiembre-2001
Ubicación: el averno...
Mensajes: 531
Antigüedad: 22 años, 7 meses
Puntos: 0
que va Josemi, no me olvido de tu código, para nada, y te agradezco mucho la ayuda, aunque (y yo no soy nadie para juzgar) me parece más standar o universal la opción de Cluster.

Mil gracias Doctores, sois los amos!!!


[EDITADO]

P.D.: El manual de PHP en php.net en español es una verdadera kaka. Y aunque si entiendo el inglés, se me hace un poco duro el inglés técnico de programadores.... lo entiendo despues de leer unas venticatorce veces....

[/EDITADO]

Última edición por kaiowas; 04/03/2003 a las 19:54
  #5 (permalink)  
Antiguo 07/08/2004, 10:49
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 20 años, 5 meses
Puntos: 4
Yo tengo un problema similar pero el codigo que dio cluster y josemi me fallan en la misma parte

$fecha_gmt1=mktime(date('H')+6, date('i'),date('s'),date('m'),date('d'),date('Y')) ;
$fecha_gmt=.....

Parse error: parse error, unexpected T_VARIABLE

Última edición por Remsankar; 07/08/2004 a las 10:51
  #6 (permalink)  
Antiguo 09/08/2004, 09:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La mayoría de errores como los que reportas se suelen arrastrar de otras líneas superiores de código .. NO por qué avise en esa línea PHP (el interprete/parser) .. está el error ahí.

Si pones todo el código completo que usas podríamos ver donde tienes tu problema.

Un saludo,
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:36.