2015-08-13 41 views
1

我用不同的事件开发网站。我想在用户当地时间显示活动开始时间。我不知道那是怎么回事。 我尝试使用这个Django应用程序django-easy-timezones。但它以UTC显示时间。 我的settings.pyDjango时区

TIME_ZONE = 'UTC' 
USE_TZ = True 

我的模板:

{% load tz %} 
{% localtime on %} 
     {{ start_time|date:"H:i" }} 
{% endlocaltime %} 

这是可以做到的,没有问一个时区?

回答

1

只有三种方法可以在不直接询问用户的情况下完成此任务; 1)使用客户端应用程序,2)依靠geo-ip或3)依靠浏览器专有的位置服务。

选项1需要在客户端获取系统时区并返回请求。在JavaScript中,您可以通过致电getTimezoneOffset()http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp来获取时区。

选项2将依赖maxmind的GeoIP数据库。他们对这个题目http://dev.maxmind.com/faq/how-can-i-determine-the-timezone-of-a-website-visitor

的GeoIP2城市数据库同样提供了 位置记录的时区的常见问题。要了解如何访问此文件,请参阅您的语言的GeoIP2 API的 文档。

选项3需要使用每个浏览器的专有地理定位技术。这里有一个链接,告诉你如何使用Mozilla https://www.mozilla.org/en-US/firefox/geolocation/

+1

还有另一种选择用户远程API。您可以通过传入IP地址来获取时区。 http://www.ipinfodb.com/ip_location_api.php –

+0

是 - 好点。 – user590028