Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fechas en PHP (localización y huso horario)

Iniciado por yens, 26 de Enero de 2008, 01:43:45 PM

« anterior - próximo »

yens

Muy buenas señores y señoras... una vez más las fechas son un quebradero de cabeza para mí en PHP... les expongo mi problema y antes de que me tilden de vago diré que me he leído (o eso creo) todas las funciones referentes a fechas en php.net:

- Tengo una web que me gustaría que localizase bien el horario según el país del visitante.

- Por lo que he podido probar mi servidor está en USA y tiene menos 9 horas respecto al horario español, lo que hacia era restarle esos segundos de diferencia y listo.

- Pero claro como eso es una chapuza he decidido guardar la fecha en UTC / GMT y apartir de ahí imprimir sumando o restando los segundos según el huso horario que necesite. Esto lo haria facilmente con date_default_timezone_set("UTC").

- La web estará solo localizada en castellano, al menos en un principio pero claro, si te visita un argentino, chileno o gente de habla hispana que no esté en España se me jode el invento...

- Así pues la pregunta sería... Cómo conocer el país de cada visitante?

Me he encontrado con algún script que se conecta a una bd y recoje según la ip el país... pero tampoco quería depender de cosas externas, y si es posible si hay otra solución...

Un saludo!

josepzin

Se me ocurre: puedes tomar el idioma del explorador y de ahí determinar el país... (a excepcion de los argentinos que estamos en todo el mundo y configuramos nuestro Winchot como es-ar allí donde estuviéresemos)

es-es: ejpaña
es-ar: argentina
en-uk: ukrañia ;)

etc...

yens

No me convence, puede haber gente con el navegador en inglés y que esté en España... etc :S

josepzin

Ocvio... :D

Que yo sepa el unico método "seguro" es con las IP, pero tampoco es que sea 100% seguro...

Martinez

Bueno lo unico que se me ocurre es acceder a la cabecera Date del mensaje HTTP. Cabeceras

Con la fecha y hora puedes compararla con la tuya y sacar la diferencia horaria. Claro que este campo depende del navegador y creo que no son obligatorias en el protocolo http. Para acceder a un campo de la cabecera Http tienes que acceder a la variable global $_HTTP["..."], creo que era asi, sq la web de php me apaparece como caida.

El unico casi seguro es a traves de la ip, pero dependes de elementos ajenos.

yens

Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD

fjfnaranjo

Cita de: "yEnS"Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD

Es lo que se hace en la mayor parte de los casos (lease foros y blogs prefabricados más comunes), por eso de que puedes tener una configuración específica de lenguaje del navegador y porque los geolocalizadores IP no son fiables.

No obstante, en vez de poner gmt+1 directamente en los perfiles, podrías estimarlo por geolocalización pidiendo a los usuarios que lo confirmen, durante un paso de la creación de perfil, claro, que lo mismo es demasiado comerse la cabeza...
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)

yens

Cita de: "fjfnaranjo"
Cita de: "yEnS"Creo que voy a optar por imprimir en gmt+1 y dar la opción a los usuarios de cambiar el huso horario en sus cuentas y listo... xD

Es lo que se hace en la mayor parte de los casos (lease foros y blogs prefabricados más comunes), por eso de que puedes tener una configuración específica de lenguaje del navegador y porque los geolocalizadores IP no son fiables.

No obstante, en vez de poner gmt+1 directamente en los perfiles, podrías estimarlo por geolocalización pidiendo a los usuarios que lo confirmen, durante un paso de la creación de perfil, claro, que lo mismo es demasiado comerse la cabeza...
Eso me es imposible... me exijo a mí mismo un paso de registro con los campos:

nick, pass y mail, no quiero nada mas :D






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.