代码之家  ›  专栏  ›  技术社区  ›  Peter Mounce

如何确定哪个时区(asp.net/monorail)网站用户在其中?

  •  1
  • Peter Mounce  · 技术社区  · 17 年前

    所以,我正在设置一个应该过期的cookie。不过,我希望这在全世界都能奏效。所以我需要根据用户的时区调整到期日期。

    所以,我需要找出用户的时区,服务器端。

    在Bcl中有这样的方法吗?就像在中一样,依赖于cultureinfo.currentuiculture设置正确(我相信monorail本地化过滤器确实这样做,但还没有正确检查),然后基于此找出用户所处的时区(以及那里的日光节约)?

    在.net 3.5中有system.timezoneinfo,但是很少有关于id是什么的文档,不管它们是iso代码还是什么。

    或者我要依赖客户端的一些东西来推送来自例如date.getTimeZoneOffset()的信息吗? 我宁愿避免那样 ,因为,嗯,客户端是谎言。

    3 回复  |  直到 17 年前
        1
  •  1
  •   Robert C. Barth    17 年前

    很简单。在服务器上,放置一个asp:hidden字段,并用当前服务器的日期/时间填充它。在客户机上,从客户机上的当前日期减去隐藏字段中的日期/时间(new date()),您就得到了GMT的偏移量。在服务器上执行此操作的相反(例如,隐藏字段中的new date(),从隐藏字段值中减去服务器时间)。

        2
  •  1
  •   Dan Herbert    17 年前

    除了IP地理位置(由于其他人提到的原因,这是一个坏主意)或JavaScript(也不是很好,因为它太模糊(由于时区),没有办法获得用户的时区。

    您最好的选择是允许用户通过某种用户控制面板自行设置时区。这样,您就可以确切地知道用户所在的时区,并允许用户确认时区。

    将来浏览器中应该会添加一些很好的地理定位功能,但这离在生产中使用还有很长的路要走。

    如果您决定使用javascript进行自动检测,我建议使用这些脚本,这些脚本扫描用户系统上的日期,找出dst发生的时间,并返回gmt偏移量(即使在dst内)。

    http://www.attackwork.com/BlogEntry/3/Time-zone-detect-and-ignore-Daylight-Saving-Time-DST/Default.aspx http://www.attackwork.com/BlogEntry/11/Daylight-Saving-Time-DST-Detect/Default.aspx

    仍然不是一个很好的主意,但它是有效的。

        3
  •  0
  •   James Curran    17 年前

    没有真正好的方法来确定客户的时区。你可以跟踪他们的IP地址,然后尝试附加一个位置到它,但这很棘手而且容易出错(有些定位程序把AOL的所有用途都放在弗吉尼亚州)

    我想说,最好是在客户方面。

    推荐文章