【发布时间】:2009-04-02 11:35:13
【问题描述】:
我知道这不是 PHP 特有的,但是使用这样列出的时区有什么意义:http://us2.php.net/manual/en/timezones.america.php?例如“America/Indianapolis”和“America/New_York”。 EST、EDT、CST、CDT 等有什么问题?
【问题讨论】:
我知道这不是 PHP 特有的,但是使用这样列出的时区有什么意义:http://us2.php.net/manual/en/timezones.america.php?例如“America/Indianapolis”和“America/New_York”。 EST、EDT、CST、CDT 等有什么问题?
【问题讨论】:
'America/New_York' 不依赖于日期。 EST 仅在冬季有效,而在夏季您必须将其更改为 EDT。 3 个字母代码的另一个问题是存在冲突。 EST 表示东部标准时间,但它可能在美国或澳大利亚。
【讨论】:
这只是Zoneinfo database提供的different timezone format:
数据库中的时区是 给定统一的名称,例如 “America/New_York”,试图 让他们更容易理解 人类并消除歧义。
【讨论】:
城市的时区或夏令时开始/结束日期可能会发生变化(过去确实发生过),但城市可能会保持在同一位置。
【讨论】:
一个时区内的所有地区都不遵循相同的规则。例如,亚利桑那州不遵守夏令时。
【讨论】:
http://us2.php.net/date_default_timezone_set
引自页面:注意:自 PHP 5.1.0(重写日期/时间函数时)以来,如果时区无效,每次调用日期/时间函数都会生成 E_NOTICE 和/或 E_STRICT如果使用系统设置或 TZ 环境变量,则显示消息。
【讨论】:
“America/Indianapolis”和“America/New_York”被称为 TZID(时区标识符),来自 tz database(也称为 zoneinfo 数据库 strong> 或 IANA 时区数据库 或 Olson 数据库)。
tz 数据库将世界划分为多个区域,其中本地时钟自 1970 年以来一直相同。
这意味着在指定 TZID 时,您可以准确无误地确定自 1970 年 1 月 1 日以来世界上发生的任何本地事件 (Unix Epoch)。
这与 Unix 时间戳一起看起来很方便。但是,请注意 32 位程序,因为它们会使用 year 2038 problem 报告负值。
“EST”、“EDT”、“CST”和“CDT”通常是 The Microsoft Windows Time Zone Database 的缩写,并且由于它们不是唯一的而导致歧义(比较“中部标准时间”, “中部夏令时间”、“中国标准时间”和“古巴标准时间”)。
更多优点/缺点在https://stackoverflow.com/tags/timezone/info 上给出。
【讨论】: