【问题标题】:Windows time locales to PHP localesWindows 时间语言环境到 PHP 语言环境
【发布时间】: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”去“欧洲/阿姆斯特丹”很难,因为它也可能是“非洲/开罗”。
  • 是的,我意识到这一点。偏移量结合了时区偏移量和任何可能在该日期生效的夏令时,因此您甚至无法区分夏季的西班牙和冬季的英国。它是时区提供的“时区”整数,也许还考虑了偏移量,我希望能回答(也许)最佳猜测人类可读时间的问题。

标签: php windows timezone


【解决方案1】:

下表解释了代码 85 的含义: http://msdn.microsoft.com/en-us/library/aa226764(v=sql.80).aspx

但您无法准确定义时区中的位置(欧盟/伦敦)。

【讨论】:

  • 好的,这看起来很有希望。这给出了每个时区与 UCT 的标准偏移量,所以我有一个名字,并且给定所提供时间的偏移量,可以判断夏令时是否在运行。现在我想我需要找到一个表,其中每个时区的名称是一年中的不同时间。例如,此处将“85”列为“GMT 时间”。但是,提供的时间可能是 15:00+1,即夏季的“15:00 BST”或冬季的 15:00,即“格林威治标准时间 15:00”。这两个名称 - GMT 或 BST - 对于阅读时代的用户来说是有意义的。
  • 85 真的是“GMT时间”,还是“英国时间”?我提供的日期包括夏令时的时间偏移,所以它看起来不像 GMT - GMT 没有偏移 - 英国时间在夏季有偏移。在 Dynamics CRM 上,用户输入带有夏季日期的“15:00”并选择“GMT 时间”作为其时区。我没有得到 15:00 GMT - 我在 15:00+1 发送,即 14:00 GMT + 一小时夏令时。命名都显得很矛盾。
  • GMT 应该是正确的,即使它包括“夏令时”。 GMT 不一定是空白世界时间。请参阅 UTC。
  • 我将把它标记为答案。它没有给我完整的答案,但我怀疑答案是“它比这更复杂”。不过,这给了我一个朝着正确方向的良好开端。谢谢。
猜你喜欢
  • 1970-01-01
  • 2019-06-25
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2020-07-10
  • 2016-11-07
  • 1970-01-01
相关资源
最近更新 更多