【问题标题】:Set the User's timezone when the only info is a UTC offset number.当唯一信息是 UTC 偏移量时,设置用户的时区。
【发布时间】:2014-05-22 05:17:33
【问题描述】:

是否存在包含函数date_default_timezone_set() 将接受的偏移量(例如:-7)的时区“代码”? (我只有偏移量,而不是像 America/Phoenix 这样的特定数字)。

当我提取用户信息时,我正在根据 Facebook 的 API 设置时区。

【问题讨论】:

标签: php facebook facebook-graph-api datetime timezone


【解决方案1】:

没有。时区不是这样工作的。时区偏移仅适用于特定时间点。许多时区在不同时间共享相同的偏移量。有些仅凭偏移就无法与其他区别。

例如,-7 可以是 MST,也可以是 PDT。它可能与全年在 MST 上的"America/Phoenix" 一起使用。但它可能属于"America/Denver",它在冬天使用 MST (-7),在夏天使用 MDT (-6)。或者它可能属于"America/Los_Angeles",冬季使用 PST (-8),夏季使用 PDT (-7)。

另请参阅timezone tag wiki

关于 Facebook,它只为您提供用户上次登录时的时区偏移量。它甚至不一定是当前时刻的正确偏移量。

【讨论】:

  • 我不能每次用户访问我的网站时都重新检查一下吗?或者用户是否必须退出 facebook 并重新登录才能更改时区?
  • Facebook 只是在用户登录时调用 JavaScript new Date().getTimezoneOffset() 并将其保存在用户的个人资料中。如果偏移量在用户下次登录之前发生变化(例如,跨越 DST 转换),他们的个人资料将不会反映这一点。
【解决方案2】:

您可以使用特定的数组。 例如, $timezone = array("-7"=>"America/Phoenix", "-6" =>"oneplace/somewhere" .........);

因此,您可以使用 date_default_timezone_set($timezone[-7]);

帕斯卡

【讨论】:

  • 嗯,很好的解决方案。那里有预加载的数组吗?好像没找到好的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2018-03-01
  • 2013-05-04
  • 1970-01-01
  • 2017-10-18
  • 2014-02-04
  • 2014-07-27
相关资源
最近更新 更多