【问题标题】:PHP datetime difficultyPHP 日期时间难度
【发布时间】:2014-03-21 10:40:35
【问题描述】:

这是必不可少的事情之一,但我厌倦了在每台服务器上配置 php、mysql 日期时间。我需要的是我的每个 php 项目的独立(基于应用程序)解决方案,它将根据时区或城市获得正确的日期时间(可能来自权威时间服务器)。我需要一些像gettimefor("Baku") 这样工作的类或函数,它会获得正确的时间戳值。

有什么解决办法吗?我真的很困惑。

【问题讨论】:

  • 您可以在代码中使用 date_timezone_set 函数。然后它不会根据服务器的位置而改变
  • 你可以看看Zend date。它可以用于任何没有整个 zend 框架的项目。
  • 您想根据访问者所在的位置自定义时区吗?本地化日期时间?
  • 伙计们,我需要为整个项目设置 1 个固定时区

标签: php mysql date datetime timezone


【解决方案1】:

如果您想为每个项目设置一个固定时区,请执行以下操作:

date_default_timezone_set()

index.php 中的某处或首先执行的任何内容。

编辑:

支持的时区列表:

http://pl1.php.net/manual/en/timezones.php

【讨论】:

【解决方案2】:

如果要将默认时区设置为用户的本地时区,则必须结合 PHP 和 JavaScript。操作方法如下:(可在此处找到:http://be2.php.net/date_default_timezone_set

<?php
session_start();
if(!isset($_SESSION['timezone']))
{
    if(!isset($_REQUEST['offset']))
    {
    ?>
    <script>
    var d = new Date()
    var offset= -d.getTimezoneOffset()/60;
    location.href = "<?php echo $_SERVER['PHP_SELF']; ?>?offset="+offset;
    </script>
    <?php    
    }
    else
    {
        $zonelist = array('Kwajalein' => -12.00, 'Pacific/Midway' => -11.00, 'Pacific/Honolulu' => -10.00, 'America/Anchorage' => -9.00, 'America/Los_Angeles' => -8.00, 'America/Denver' => -7.00, 'America/Tegucigalpa' => -6.00, 'America/New_York' => -5.00, 'America/Caracas' => -4.30, 'America/Halifax' => -4.00, 'America/St_Johns' => -3.30, 'America/Argentina/Buenos_Aires' => -3.00, 'America/Sao_Paulo' => -3.00, 'Atlantic/South_Georgia' => -2.00, 'Atlantic/Azores' => -1.00, 'Europe/Dublin' => 0, 'Europe/Belgrade' => 1.00, 'Europe/Minsk' => 2.00, 'Asia/Kuwait' => 3.00, 'Asia/Tehran' => 3.30, 'Asia/Muscat' => 4.00, 'Asia/Yekaterinburg' => 5.00, 'Asia/Kolkata' => 5.30, 'Asia/Katmandu' => 5.45, 'Asia/Dhaka' => 6.00, 'Asia/Rangoon' => 6.30, 'Asia/Krasnoyarsk' => 7.00, 'Asia/Brunei' => 8.00, 'Asia/Seoul' => 9.00, 'Australia/Darwin' => 9.30, 'Australia/Canberra' => 10.00, 'Asia/Magadan' => 11.00, 'Pacific/Fiji' => 12.00, 'Pacific/Tongatapu' => 13.00);
        $index = array_keys($zonelist, $_REQUEST['offset']);
        $_SESSION['timezone'] = $index[0];
    }
}
date_default_timezone_set($_SESSION['timezone']);

//rest of your code goes here
?>

【讨论】:

    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2010-11-05
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多