我有一台设置为 EST 的服务器,并且数据库中的所有记录都设置为 EST。我想知道如何将其设置为 GMT。我想为我的用户提供时区选项。
I would strongly建议避免弄乱 UNIX 时间戳,使其看起来像不同的时区。这是我从惨痛的教训中学到的教训,而且已经很多次了。
时间戳是自格林尼治标准时间 1970 年 1 月 1 日午夜以来的秒数。无论您身在世界何处,给定的时间戳都代表完全相同的时刻,无论时区如何。是的,时间戳“0”在澳大利亚表示 1/1/70 上午 10 点,在伦敦表示 1/1/70 午夜,在洛杉矶表示 31/12/69 下午 5 点,但这并不意味着您可以简单地添加或减去值并保证准确性。
每年夏令时突然到来时,都会让我感到无聊太久。夏令时意味着世界某些地区不存在“时钟时间”。例如,在美国大部分地区,没有 2006 年 4 月 2 日凌晨 2:01 这样的时间。
不过,足够的准可理解的咆哮。我的建议是将日期作为时间戳存储在数据库中,然后......
- 如果您需要服务器上的当地时间,请使用date() http://php.net/date
- 如果您需要获取 GMT,请使用gmdate() http://php.net/gmdate
- 如果您需要获取不同的时区,请使用date_default_timezone_set() http://php.net/date_default_timezone_set进而
date()
例如,
$timestamp = time();
echo "BRISBANE: " . date('r', $timestamp) . "\n";
echo " UTC: " . gmdate('r', $timestamp) . "\n";
date_default_timezone_set('Africa/Johannesburg');
echo " JOBURG: " . date('r', $timestamp) . "\n";
// BRISBANE: Tue, 12 May 2009 18:28:20 +1000
// UTC: Tue, 12 May 2009 08:28:20 +0000
// JOBURG: Tue, 12 May 2009 10:28:20 +0200
这将使您的值保持干净(您不必担心添加偏移量,然后在保存之前减去),它将尊重所有夏令时规则,并且您甚至不必查找该地点的时区你要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)