【问题标题】:PHP - date() vs. date.timezone / date_default_timezone_set()PHP - date() 与 date.timezone / date_default_timezone_set()
【发布时间】:2012-04-25 01:45:06
【问题描述】:

我刚买了一台新电脑,我一直在设置 PHP/MySQL/数据库等...我想我就差不多了,除了它抛出了这个曲线球。我的登录脚本运行良好,但现在它发出以下警告(这会弄乱 JSON)。

警告: date() [function.date]: 依赖系统的时区设置是不安全的。你是 需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了其中任何一个 方法并且您仍然收到此警告,您很可能 时区标识符拼写错误。我们选择了“南极洲/麦格理” 'EST/10.0/no DST' 代替 .../php/login.php 在线 47

我的代码显然使用了date(),并且在实时版本和旧机器上工作。我收到以下两行代码的两个警告:

$date = date("ymd");

$this_year = date("y");

我的研究(参见here)表明这些函数的行为取决于 php.ini 。

那么我应该在新机器上更改 php.ini,还是使用某种已弃用的方法,我应该完全放弃 date()

谢谢。

【问题讨论】:

  • 谢谢大家。使用 date_default_timezone_set('...') 就像一个魅力。

标签: php date warnings php-ini


【解决方案1】:

如果您使用date_default_timezone_set(),则无需更改 php.ini 文件。只需将其设置为您将在其中工作的时区即可。

这样的内容应该放在配置文件中或您正在处理日期的页面上(如果它只有一页):

date_default_timezone_set('America/Los_Angeles');

【讨论】:

    【解决方案2】:

    这也不例外,这可能是现在弹出的警告,因为您在新机器上的错误报告设置与旧机器不同。

    我建议遵循警告中的建议,并使用date_default_timezone_set() 在脚本中设置您需要的时区。

    【讨论】:

      【解决方案3】:

      首先,虽然它可能知道,但这解决了问题。

      date_default_timezone_set('Your/Timezone');
      

      如果要在php.ini中配置,请在下面修改

      [Date]
      ; ...
      ; ...
      date.timezone = Your/Timezone
      

      【讨论】:

        【解决方案4】:

        您不必更改 php.ini。

        但是,如果您有一个用于大部分 php 文件的时区,则在 php.ini 中添加以下行应该可以解决问题。

        date.timezone = "Your/Timezone"
        

        在我的例子中,我在 php.ini 中添加了以下行。就个人而言,我更喜欢将我们所有的服务器都保持在 UTC 时区。

        date.timezone = "UTC"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-22
          • 1970-01-01
          • 2013-12-15
          相关资源
          最近更新 更多