Javascript 在不明确询问用户的情况下,收集用户时区的最佳方法是什么?

Javascript 在不明确询问用户的情况下,收集用户时区的最佳方法是什么?,javascript,iphone,ruby-on-rails,timezone,Javascript,Iphone,Ruby On Rails,Timezone,对于基于web和iPhone的应用程序,我需要收集用户的时区,以便向他/她显示相关数据。我可以想到的一些可能性包括: 1.使用用户的IP获取,但如果用户位于代理服务器后面怎么办 2.将其与请求参数一起发送,但这将要求附加额外的参数与请求。或者可能会为一个会话收集一次 3.将其传递给Cookies与参数中的设置具有相同的含义 4.基于我在注册时收集的用户邮政编码,但对于可以浏览应用程序的未注册用户,将无法查看相关数据 总之,我现在能想到的每种方法都有一个或多个缺点。我只想知道还有哪些其他方法,在用

对于基于web和iPhone的应用程序,我需要收集用户的时区,以便向他/她显示相关数据。我可以想到的一些可能性包括:

1.使用用户的IP获取,但如果用户位于代理服务器后面怎么办 2.将其与请求参数一起发送,但这将要求附加额外的参数与请求。或者可能会为一个会话收集一次 3.将其传递给Cookies与参数中的设置具有相同的含义 4.基于我在注册时收集的用户邮政编码,但对于可以浏览应用程序的未注册用户,将无法查看相关数据


总之,我现在能想到的每种方法都有一个或多个缺点。我只想知道还有哪些其他方法,在用户体验不受影响且用户未被明确询问其时区的情况下,哪种方法最适合使用。这种方法也应适用于web和iPhone。

我将使用JavaScript收集用户的当前时间,并将其与第一个请求一起发送,以持续整个会话

你将不得不考虑到可能+15分钟的偏差,但应该可以通过这种方式非常可靠地确定时区


下一个最好的方法可能是通过地理定位服务运行用户的IP以了解国家。但是,要正确地做到这一点,您必须维护一个国家到时区的地图,并且您将遇到与美国或俄罗斯等具有多个时区的国家的问题。

我对iPhone的开发不太了解,但API中可能有允许您访问用户偏好的内容,甚至是向他们显示的当前时间


对于一般的web,它在中有广泛的介绍。

对于web,您应该能够从用户的浏览器中获得它。对于iPhone,我可以想象有一个API可以实现这一点。至少,当我改变时区时,我的iPhone显示的是正确的本地时间。我想当它连接到本地手机发射塔时,它会从本地手机发射塔获取这些信息。

使用JavaScript,你可以使用new Date.getTimezoneOffset,如果有帮助的话。根据,这将在几分钟内得到偏移量。。。就我而言,芬兰是-180

关于获取时区的iPhone SDK。。。这将得到你所需要的,并调整为夏令时

NSTimeZone *systimeZone = [NSTimeZone systemTimeZone];
NSString *timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortStandard locale:currentLocale];
if([systimeZone isDaylightSavingTimeForDate:[NSDate date]]){
    timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortDaylightSaving locale:currentLocale];
}

有很多关于时区对象的信息。

我也考虑过问题中已经提到的这些方法,但问题是,除了通过地理定位服务运行ip之外,所有这些都需要在客户端进行额外处理。我期待的是在报头中附加一些内容,但我不确定是否这样信息可以从http头中提取,还是确实存在,因为我从未在http请求头中看到过此类信息。@Hitesh我认为没有http头指定用户的时区。在Ajax调用中获取当前时间应该不会太困难,尽管如此。谢谢。我想我现在必须坚持使用ajax调用方法。你为什么不直接要求他们或者让一个选择框来更改它,而不是让这样一个简单的“功能”过于复杂化呢?@david我想从用户的角度来简化它,这样他们就不必在每次更改位置时都提到时区了我正在使用的应用程序是一个基于位置的实时服务,所以我需要在每次不提示用户选择时区的情况下收集它。