在Java中按国家/地区获取时区
我的应用程序托管在美国。服务器时区以GMT为单位。现在,当全球各地的用户访问此应用程序时,我希望获得访问该应用程序的国家/地区的时区。比如说,我是从欧洲的某个地方访问的。我想知道特定地区的时区。我希望这是用Java来完成的。我不完全确定您实际上在问什么,因为我相信您可以自己回答这个问题 您无法直接从http请求中获取时区,如下所述: 但您可以通过ip地址来确定。此处提及: 还可以使用getTimeZoneOffset()。此处提及:在Java中按国家/地区获取时区,java,timezone,Java,Timezone,我的应用程序托管在美国。服务器时区以GMT为单位。现在,当全球各地的用户访问此应用程序时,我希望获得访问该应用程序的国家/地区的时区。比如说,我是从欧洲的某个地方访问的。我想知道特定地区的时区。我希望这是用Java来完成的。我不完全确定您实际上在问什么,因为我相信您可以自己回答这个问题 您无法直接从http请求中获取时区,如下所述: 但您可以通过ip地址来确定。此处提及: 还可以使用getTimeZoneOffset()。此处提及: 在注册时提示用户输入gmt或国家代码(并由此计算gmt)
在注册时提示用户输入gmt或国家代码(并由此计算gmt)似乎更容易。您需要先将客户端IP地址映射到地理位置。
有相当多的数据库包含这些信息。
例如,查看一个数据库,该数据库具有IP地址到各种位置信息的映射信息。
您可以将数据加载到本地数据库,并使用被叫方的IP地址进行查询。(当您使用Java servlet时,在您的
HttpRequest
中就有了它。)该数据库的商业版(90美元)也有时区 其他可能性包括使用Web服务,如。 当客户端发出请求时,您将从服务请求数据。 当然,这可能很慢,而且您依赖于远程服务的可用性 周围还有其他数据库和服务,请找到适合您需要的数据库和服务
我没有找到一个是免费的,有时区信息的。一个国家的信息肯定是不够的,当涉及到较大的国家时。您可以采取两种方法:
<script type="text/javascript" src="/script/detect_timezone.js"></script>
<script type="text/javascript">
var tz_info = jstz.determine_timezone();
var timezone = tz_info.timezone;
var tz_id='';
if (timezone != 'undefined') {
timezone.ambiguity_check();
tz_id = timezone.olson_tz;
alert(tz_id); // olson timezone, e.g. "Europe/London", "Asia/Tokyo" etc.
}
</script>
var tz_info=jstz.determine_timezone();
var时区=tz_info.timezone;
var tz_id=“”;
如果(时区!=“未定义”){
时区。模糊性检查();
tz_id=timezone.olson_tz;
警报(tz_id);//奥尔森时区,例如“欧洲/伦敦”、“亚洲/东京”等。
}
这比摆弄IP地理定位要容易得多,因为大多数人都将他们的计算机/设备设置为“正确”的时区,所以大部分时间都是正确的。首先,我们必须这样做
然后根据时区,我们必须按如下方式获取时间:
public String getLocalTime(String timezone) {
TimeZone tz = TimeZone.getTimeZone(timezone);
Calendar localtime = new GregorianCalendar(tz);
String strLocalTime = localtime.get(Calendar.HOUR_OF_DAY) + ":"
+ localtime.get(Calendar.MINUTE) + ":" + localtime.get(Calendar.SECOND);
return strLocalTime;
}
这是一个web应用程序还是其他什么?我不认为jdk/jre会打包这个。他们有一个TZ数据库,但他们没有将位置映射到TZ@Jon,这是一个网站application@user1445777:在这种情况下,您需要依靠Javascript为您提供真正的时区,除非您以其他方式知道用户所在的位置。你知道吗?(例如,IP地理编码是一种选择——或者用户可能以其他方式指定了他们的位置。)