Logo

¡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: yEnSCreo 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: yEnSCreo 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.
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.