【发布时间】:2012-07-09 12:44:20
【问题描述】:
我正在开发一个带有来自 Dynamics CRM 的时间戳的 PHP 应用程序。每个时间戳都以 ISO8601 格式提供,因此我们得到相对于 UST 的时间。
现在,我们还获得了一个时区编号。这是必需的,因此我们可以正确显示时区。例如,我们可能会在夏季获得 16:00+1,时区为 85(英国,我相信),因此将显示为 16:00 BST。
PHP 在使用 DateTime 类显示格式化的日期和时间时,需要这种格式的时区:“欧洲/伦敦”。
现在,我需要的是从 Dynamic 的“85”到 PHP 的“Europe/London”的翻译。我不知道这两个列表中的任何一个叫什么(85 看起来像是我从 DOS 时代记得的东西),而且我在任何地方都找不到任何映射表或列表。
简而言之:我们在 PHP 上有 - 或者可以派生 - 本质上是 unix 时间戳,并且从 MS Dynamics 获得了一个“时区”编号,并且需要能够以适合时区的格式显示该时间戳,例如“英国夏令时 16:00”、“格林威治标准时间 15:00”、“美国东部标准时间 11:00”。
【问题讨论】:
-
从“+0200”去“欧洲/阿姆斯特丹”很难,因为它也可能是“非洲/开罗”。
-
是的,我意识到这一点。偏移量结合了时区偏移量和任何可能在该日期生效的夏令时,因此您甚至无法区分夏季的西班牙和冬季的英国。它是时区提供的“时区”整数,也许还考虑了偏移量,我希望能回答(也许)最佳猜测人类可读时间的问题。