【问题标题】:Using python, what is the most accurate way to auto determine a users current timezone使用python,自动确定用户当前时区的最准确方法是什么
【发布时间】:2023-04-04 17:16:01
【问题描述】:

我已经验证 dateutils.tz.tzlocal() 在 heroku 上不起作用,即使它起作用,它不会只是从计算机的操作系统中获取 tz,而不是用户?

缺少存储用户时区,有什么方法可以确定请求来自哪里? (我用的是烧瓶)

Twitter 确实有一个设置来调整你的时区,但我想知道他们如何确定默认值应该是什么以及在用户未登录时如何工作。

【问题讨论】:

  • 你说的是什么环境?如果来自世界各地的用户 ssh 怎么办?
  • 运行客户端的js会不会更好?
  • 我使用过的所有网络应用程序都存储用户时区偏好。它是一个小样本,但仍然是一个样本。它相对不优雅,但它很简单,并且由于奇怪的客户端/操作系统而导致的故障最少:)
  • 不相关:要找出服务器时区,您可以使用tzlocal.get_localzone()

标签: python datetime timezone flask


【解决方案1】:

如果您可以轻松地从烧瓶中获取用户的 IP 地址(可能来自 request 对象?),您可以使用地理定位。例如。通过http://www.hostip.info/

不过,它可能不是 100% 万无一失的。例如,如果有人使用 VPN 或其他类型的代理,您将看不到他的“真实”IP 地址。

【讨论】:

  • 是的,确实如此。我对js不是很熟悉。每天在这里都能学到新东西。 :-)
  • 如果你想从一个位置获取时区; you can.
【解决方案2】:

您可以使用 Javascript 并在 cookie 中设置客户端的时区。您甚至可以使用 AJAX 请求,然后将偏移量发送到服务器并保存在客户端的会话中。

var offset = new Date().getTimezoneOffset();

说明

时区偏移是 UTC 和本地时间之间的差异,以分钟为单位。请注意,这意味着如果本地时区在 UTC 之后,则偏移量为正,如果在之前,则偏移量为负。例如,如果您的时区是 UTC+10(澳大利亚东部标准时间),则将返回 -600。即使对于给定的语言环境,夏令时也可以防止此值保持不变

Mozilla Javascript Reference: getTimezoneOffset

【讨论】:

  • 不是它与通常称为 utc 偏移量的符号相反(本地时间 = utc + 偏移量)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2018-03-17
  • 2014-07-08
  • 2010-12-10
相关资源
最近更新 更多