【问题标题】:cakephp date.timezone is a few hours behindcakephp date.timezone 晚了几个小时
【发布时间】:2012-10-05 01:25:36
【问题描述】:

我已经安装了 cakephp 1.3,它使用以下内容:
Apache 版本:2.2.21
PHP 版本:5.3.8
MySQL 版本:5.5.16.
问题是当我回显以下内容时

echo date('l jS \of F Y h:i:s A');
我的时间比我的当地时间早了几个小时(机器时间设置为我所在国家/地区的时间,即澳大利亚)。
当我在 php.ini 文件中进行更改并设置 date.timezone = UTC + 10 时,我得到了正确的本地时间,但我也得到了很多警告。

警告:strtotime() [function.strtotime]:依赖系统的时区设置是不安全的。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,您很可能拼错了时区标识符。我们在第 515 行的 C:\wamp\www\cakephp\lib\Cake\Cache\Cache.php 中为 '10.0/no DST' 选择了 'Australia/Melbourne'

请帮忙谢谢

【问题讨论】:

  • 我检查了 core.php 文件,没有发现任何东西
  • ...我不想禁用警告。

标签: php cakephp


【解决方案1】:

您不能将时区指定为 UTC 的偏移量,如您在帖子中提到的“UTC+10”。您必须使用有效的时区字符串之一。选择您所在的大陆here,您将获得有效时区字符串列表。

例如。在 core.php 中你必须这样做:

date_default_timezone_set("Australia/Melbourne");

将时区字符串更改为您喜欢的任何其他有效时区字符串。顺便说一句,CakeTime::listTimezones() 也会给你时区列表。

编辑:您可能可以将时区指定为与 UTC 的偏移量,但不应该这样做。

【讨论】:

    【解决方案2】:

    如果您从 PHP 中收到与时区相关的错误,请取消注释一行 在 app/Config/core.php 中:

    <?php
    /**
     * Uncomment this line and correct your server timezone to fix
     * any date & time related errors.
     */
        date_default_timezone_set('UTC');
    

    http://book.cakephp.org/2.0/en/installation.html#fire-it-up

    【讨论】:

    • 我已取消注释该行。但我仍然有同样的问题。日期是 2012 年 5 月 10 日,没关系,但时间是 10 小时前(我的电脑时间是下午 3:43),回显时间是上午 5:43。谢谢
    • 所以更改时区“UTC”以匹配您当地的时区。
    • ADmad,正如我上面提到的,当我将它从 UTC 更改为 AEST 或 AEDT 时它可以工作,但我收到很多警告(见上文)
    • 查看我的帖子,如果您在 core.php 中使用 date_default_timezone_set() 设置时区,您肯定不会收到任何错误
    • ADmad,谢谢它的工作,但还有一个问题,这只修复了 cakephp 应用程序,但如果我在不同的应用程序中回显时间,它会显示 10 小时不同的时间,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2019-08-30
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多