Foros del Web » Programando para Internet » PHP »

Mentir la fecha atrasando la hora

Estas en el tema de Mentir la fecha atrasando la hora en el foro de PHP en Foros del Web. Hola!!.. tengo el siguiente drama. En mi página puse la fecha usando un fichero externo que bajé de este mismo Foro, anda bien, el tema ...
  #1 (permalink)  
Antiguo 24/04/2007, 21:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Mentir la fecha atrasando la hora

Hola!!.. tengo el siguiente drama. En mi página puse la fecha usando un fichero externo que bajé de este mismo Foro, anda bien, el tema es que por la diferencia horaria del servidor me cambia el día antes de las 12.
Quiero saber como solucionar esto agregándole unas 4 horas al día.
Este es el fichero para "date.php"

Código PHP:
<?
/*  sube este fichero a tu sitio 
   y llamalo utilizando este include
   en la parte que quieras que se visualize la 
   fecha y hora en tu web */

//Variable nombre del mes
$nommes = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");

//variable nombre día
$nomdia = array("Domingo""Lunes""Martes""Miercoles""Jueves""Viernes""Sabado");

/* date(j) toma valores de 1 al 31 segun el dia del mes
date(n) devuelve numero del 1 al 12 segun el mes
date(w) devuelve 0 a 6 del dia de la semana empezando el domingo
date(Y) devuelve el año en 4 digitos */

$dia date(j); //Dia del mes en numero
$mes date(n); //Mes actual en numero
$diasemana date(w); //Dia de semana en numero

$hoy $nomdia[$diasemana].", ".$dia." de ".$nommes[$mes-1]." del ".date(Y)." ";

echo 
$hoy;

?>
Agradezco una manito.
Saludos
  #2 (permalink)  
Antiguo 24/04/2007, 21:44
Avatar de cplus  
Fecha de Ingreso: abril-2007
Mensajes: 164
Antigüedad: 17 años
Puntos: 1
Re: Mentir la fecha atrasando la hora

te faltaria modificarlo para que controle las horas + lo que ya tienes...

asi podrias decirle que sume +4

date(g);

http://es2.php.net/manual/es/function.date.php
  #3 (permalink)  
Antiguo 24/04/2007, 22:30
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Mentir la fecha atrasando la hora

Pero dónde defino eso?..
Donde está definido el día? o le agrego la hora y muestra solo el día de acuerdo a la hora que es?..
  #4 (permalink)  
Antiguo 24/04/2007, 22:38
Avatar de cplus  
Fecha de Ingreso: abril-2007
Mensajes: 164
Antigüedad: 17 años
Puntos: 1
Re: Mentir la fecha atrasando la hora

en realidad mas que modificar necesitas hacer uno nuevo...

usa las caracteristicas de DATE encontraras cosas muy interesantes.... pero has de leer un poco jou
  #5 (permalink)  
Antiguo 24/04/2007, 22:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Mentir la fecha atrasando la hora

Muchas gracias por los consejos.
Estoy haciendo pruebas y pruebas con eso.

Saludos.
  #6 (permalink)  
Antiguo 24/04/2007, 22:44
Avatar de cplus  
Fecha de Ingreso: abril-2007
Mensajes: 164
Antigüedad: 17 años
Puntos: 1
Re: Mentir la fecha atrasando la hora

perdona que no pueda atenderte mejor... pero me voy a la cama, son las 06:43, sigue esa pista que te llevara a buen puerto, aunq creo que hay algo para tu saber en que region estas y decirselo al DATE, asi el solo hace la conversion de tu ciudad... +2 , +6 , -4 horas lo que necesites...

aun a malas puedes hacer el truquito que ya estaras pensando.

un saludo.
  #7 (permalink)  
Antiguo 24/04/2007, 22:56
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: Mentir la fecha atrasando la hora

Pare de sufrir!!

Es muy sencillo amigo.
Si quieres que la funcion date te reste 4 horas a la del servidor, pues bien, un minuto tiene 60 segundos y una hora tiene 60 minutos, que en 4 horas tienes un total de 14400 segundos.

Entonces a la función date le solicitas que te muestre lo que quiereas en el segundo actual restándole 4 horas.

O sea, time()-14400.
Si quieres sumarle 4 horas, a los segundos actuales les sumas 14400 seundos: time()+14400.

Como conclusión, este concepto combinado con la funciópn date quedaría de esta manera:

Código PHP:
$hoy date("d-m-Y H:i:s",time()+14400);
echo 
$hoy;
 
Eso te mostrará el díamesaño y hora actual pero sumándole 4 horas.
Lo mismo aplicas a tu script para sumar 4 horas:
 
$dia date("j",time()+14400); //Dia del mes en numero 
$mes date("n",time()+14400); //Mes actual en numero 
$diasemana date("w",time()+14400); //Dia de semana en numero 
Bueno amigo espero haber sido de utilidad!!
Suerte y me tienes al tanto

  #8 (permalink)  
Antiguo 24/04/2007, 22:58
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Mentir la fecha atrasando la hora

Listo!!
Quedó funcionando, le agregué $hora = Date (H) -5; y $minutos = Date (i); y ya me muestra la hora correcta. Vale aclarar que debía restarle y no sumarle horas.

El código de "date.php" quedó así:
Código PHP:
<?
/*  sube este fichero a tu sitio 
   y llamalo utilizando este include
   en la parte que quieras que se visualize la 
   fecha y hora en tu web */

//Variable nombre del mes
$nommes = array("Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");

//variable nombre día
$nomdia = array("Domingo""Lunes""Martes""Miercoles""Jueves""Viernes""Sabado");

/* date(j) toma valores de 1 al 31 segun el dia del mes
date(n) devuelve numero del 1 al 12 segun el mes
date(w) devuelve 0 a 6 del dia de la semana empezando el domingo
date(Y) devuelve el año en 4 digitos */

$dia date(j); //Dia del mes en numero
$mes date(n); //Mes actual en numero
$diasemana date(w); //Dia de semana en numero
$hora date(H)-5;
$minutos date(i);

$hoy $nomdia[$diasemana].", ".$dia." de ".$nommes[$mes-1]." del ".date(Y).", " .$hora.":" .$minutos;

echo 
$hoy;

?>
Gracias por la ayuda!!..

Saludos.

Última edición por elbastardo; 24/04/2007 a las 23:02 Razón: No vi el último aporte..
  #9 (permalink)  
Antiguo 24/04/2007, 23:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Mentir la fecha atrasando la hora

Excelente usermax!!..

Ahora hay 2 opciones que andan bien, voy a probar que tal tu solución.

Muchas gracias!
  #10 (permalink)  
Antiguo 25/04/2007, 00:05
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: Mentir la fecha atrasando la hora

Por nada amigo!

Hay un detalle que debes tener en cuenta!!

Si haces:
$hora=date("H")-5;

Lo que estas haciendo es lógicamente restar 5 horas a la hora actual.
Ahora tu script no es preciso de esa manera.

Lo has hecho asi:

$dia = date(j); //Dia del mes en numero
$mes = date(n); //Mes actual en numero
$diasemana = date(w); //Dia de semana en numero
$hora = date(H)-5;
$minutos = date(i);

En estos momento donde yo vivo son las 3:00 Am del día 25 de abril.
Segun los datos como los configuraste si imprimo la hora me pondrá

echo $hoy;

miercoles 25 de Abril del 2007, -2:00

Obviamente está mal.
Deja que php se encargue de manejar las fechas. Hazlo así:

Código PHP:
//18000 segundos son 5 horas
$dia date("j",time()-18000); //Dia del mes en numero 
$mes date("n",time()-18000); //Mes actual en numero 
$diasemana date("w",time()-18000); //Dia de semana en numero 
$hora date("H",time()-18000); 
$minutos date("i",time()-18000); 
De esta manera si vuelvo a imprimir php restará 5 horas y manejará todo automátiamente.
Si imprimo me mostrará (siendo las 3am del día 25 de abril):

martes 24 de Abril del 2007, 10:00pm

Ahi estaríamos bien.
Se entiende?

Me tienes al tanto amigo!
Suerte
  #11 (permalink)  
Antiguo 25/04/2007, 00:08
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Mentir la fecha atrasando la hora

Mejor imposible!..

La verdad no tenía en cuenta esos detalles, ya me doy una idea del conflicto que eso podría ocasionar, ya lo corrijo y, otra vez te agardezco un montón.

Saludos!
  #12 (permalink)  
Antiguo 25/04/2007, 00:22
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: Mentir la fecha atrasando la hora

Como última sugerencia puedes simplificar un poco la cosa así:

//18000 segundos son 5 horas
Código PHP:
$atraso time()-18000;
 
$dia date("j",$atraso); //Dia del mes en numero 
$mes date("n",$atraso); //Mes actual en numero 
$diasemana date("w",$atraso); //Dia de semana en numero 
$hora date("H",$atraso); 
$minutos date("i",$atraso); 

Es una tontera pero a la larga cuenta
Ahora si!!!

Nos vemos

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 17:21.