Foros del Web » Programando para Internet » PHP »

zonas horarias

Estas en el tema de zonas horarias en el foro de PHP en Foros del Web. hola gente.. ando necesitamos mostrarle a mis usuarios los posts en su horario. cuando los guardo en la base los guardo con NOW() pero el ...
  #1 (permalink)  
Antiguo 15/12/2008, 21:16
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
zonas horarias

hola gente..
ando necesitamos mostrarle a mis usuarios los posts en su horario.
cuando los guardo en la base los guardo con NOW() pero el servidor esta en estados unidos.

y si estoy en argentina y quiero convertir la fecha del post a mi fecha?
se como convertirla.. lo que no se es como tomar la zona horaria del usuario..

le agrego un campo a mi tabla de la base de datos y le agrego la zona horaria?
voy a quedar loco... especialmente en los paises que tienen multiples zonas horarias!

php no tiene nada? aunque no me imagino como podria tomar la fecha del usuario

alguien lidió con esto alguna vez?
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 15/12/2008, 21:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: zonas horarias

mmm... nunca he sabido bien como, pero se me ocurre usar Javascript para obtener la hora del sistema del cliente....

y mas que almacenar ese dato en la BD, mejor en una cookie o variable de sesión ...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/12/2008, 23:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: zonas horarias

O mejor usar date_default_timezone_set(), con eso pones al server en el mismo uso horario de tus users, o puedes dejar que ellos lo configuren.

Saludos.
  #4 (permalink)  
Antiguo 16/12/2008, 06:31
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: zonas horarias

Excelente función. La manera que la habría encarado sería guardar en la base de datos la diferencia de horas entre el país de origen del usuario y el lugar donde reside el servidor. Y después con una función que a Now() agregue o quite horas de acuerdo a esto. En asp hay una función dateAdd para hacer esto fácilmente. No sé si en php existe algo similar.
Saludos.
__________________
Add, never Remove
  #5 (permalink)  
Antiguo 16/12/2008, 06:54
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: zonas horarias

si tengo un usuario de argentina, otro de chile, otro de uruguay
esa funcion modifica el php con 3 zonas horarias distintas, por lo que si meto un registro en la db lo meteria con 3 fechas distintas.
lo que necesito es obtener la zona de cada usuario y solo convertirle las fechas, pero que la fecha original siga en la base
__________________
On error no hago nada porque deje de fumar...
  #6 (permalink)  
Antiguo 16/12/2008, 07:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años
Puntos: 9
Respuesta: zonas horarias

No veo la limitación de hacerlo de la forma en que dije antes. Estuve recorriendo un poco la red y no encontré una función en php que nos permita agregar horas a una fecha dada (quizás en el foro encuentres alguna). Si no es así, investiga la forma de crearte una función de la forma date_add($fecha,$horas_a_agregar). En tu base datos, por cada usuario te creas un campo dif_horaria con formato (+|-)\d. Cuando traes los posts desde la base de datos solo te queda saber si tenés que sumar o restar horas a la fecha que traes de tu base de datos (dependiendo obviamente si el campo dif_horaria empieza con '+' o con '-') y ahora tu nueva fecha será date_add($fecha_base_de_datos,$horas).
Por supuesto que tendrás que agregarle a tu sitio la interfaz necesaria para que el usuario pueda seleccionar la diferencia horaria y así te quede almacenado ese valor en la base de datos.
Saludos.
__________________
Add, never Remove
  #7 (permalink)  
Antiguo 16/12/2008, 08:31
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: zonas horarias

la funcion que muestras cargaria registros en la base con la hora actual de php, la cual cambia para cada usuaro,
mi idea es tener siemprel a misma fecha.. pero modificarla segun el usuario

por ej.


$timezone = 'America/Buenos_Aires'

function convert_tz ($date_str, $tz, $date_format = "r") {
$time = strtotime($date_str);
$tz_bak = getenv("TZ");
putenv("TZ=$tz");
$ret = date($date_format, $time);
putenv("TZ" . ($tz_bak ? "=$tz_bak" : ""));
return $ret;
}

<?=convert_tz($photo['date'],$timezone,"Y-m-d H:i:s");?>

el tema es que no tengo los timezones de tooooodo el mundo.
por eso me parecia saludable ver si se podia obtener del usuario.
__________________
On error no hago nada porque deje de fumar...
  #8 (permalink)  
Antiguo 16/12/2008, 10:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: zonas horarias

Mmm si te fijas, por ejemplo este foro vBulletin, guarda todos los timestamps en GMT, y luego usando esa funcion calcula la diferencia y te muestra el horario en base a la preferencia que tu hayas seleccionado en el panel de control.

Saludos.
  #9 (permalink)  
Antiguo 16/12/2008, 14:09
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: zonas horarias

claro, eso mismo solo que yo queria hacerlo automaticamente levantandolo del pais del usuario y no que tenga que elegir su timezone... sacarlo segun el pais. que funcion usa el foro para convertir... la misma que puse yo?
__________________
On error no hago nada porque deje de fumar...
  #10 (permalink)  
Antiguo 16/12/2008, 14:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: zonas horarias

Desconozco que funcion use el foro, pero a lo mejor puedes descargar el foro PHPBB, tiene una funcionalidad similar y analizar el codigo fuente.

Saludos.
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 07:37.