我正在开发一个网站,用户可以使用他们的 Facebook 凭据登录。
现在我面临日期和时间的问题。我的本地系统使用与 Facebook 使用的不同的“浪漫标准时间”。
在我本地的地方,我们使用 DST,根据一年中的时间,我们可以是 UTC + 1 或 UTC + 2。
我的问题是,“考虑到 UTC+1 和 UTC+2 之间的偶尔变化,我如何将 Facebook 时间转换为本地系统将使用的格式?”
我正在开发一个网站,用户可以使用他们的 Facebook 凭据登录。
现在我面临日期和时间的问题。我的本地系统使用与 Facebook 使用的不同的“浪漫标准时间”。
在我本地的地方,我们使用 DST,根据一年中的时间,我们可以是 UTC + 1 或 UTC + 2。
我的问题是,“考虑到 UTC+1 和 UTC+2 之间的偶尔变化,我如何将 Facebook 时间转换为本地系统将使用的格式?”
根据此文档,用户更改其时区的唯一方法是更改其计算机的时区并注销并重新登录 Facebook。这会让我相信他们只是在浏览器中使用 JavaScript 中的 UTC 偏移量并将其传递回服务器。
因此,timezone
从 Facebook Graph API 返回的字段值可能是用户上次登录时的偏移量。
它也可能代表截至用户注册之日的偏移量,并且无法更改。我在文档中找不到任何参考资料,因此必须进行试验才能确定。
无论采用哪种速率,都无法仅从偏移量中得出时区。有许多时区具有相同的偏移量。有关有用的类比,请参阅我对相关主题的回答。
处理 Facebook 时代很困难。这是我的经验:
2013-01-17T08:00:00+0000
,则定义了与 UTC 的偏移量。您只需要解析它并将其转换为您的本地偏移量。1358694451
定义的时区 。America/Los_Angeles
2013-01-17
如果您得到一个不超过19 个字符的 ISO 8601 时间戳,例如2013-01-17T08:00:00
时间是相对于该时间对象的区域设置,或者如果对象没有区域设置,则它在America/Los_Angeles
时区中。我不是 ac# 开发人员,但这篇 MSDN 文章可能有助于转换时区。http://msdn.microsoft.com/en-us/library/bb397769.aspx