【问题标题】:Laravel/MYSQL created_at and updated_at are applying different timezonesLaravel/MYSQL created_at 和 updated_at 应用不同的时区
【发布时间】:2018-12-19 05:07:22
【问题描述】:

我有一个正在使用的应用程序

'timezone' =>'UTC'

在数据库设置中。这适用于所有 created_at 字段,但是 updated_at 字段仍处于错误的时区

如何让 MYSQL 将正确的时区应用到 updated_at 字段??

这些是我的数据库设置

'default' => 'main_db',
'fetch' => PDO::FETCH_ASSOC,
'connections' => [
    'main_db' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => env('DB_DATABASE'),
        'username'  => 'root',
        'password'  => env('DB_PASSWORD'),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'timezone' => env('DB_TIMEZONE')

其中 env('DB_TIMEZONE') 为 'UTC'

【问题讨论】:

  • 它应该适用于两者,你能更具体吗?
  • 检查您的控制器。您可能已经重载了一些默认功能。

标签: php mysql laravel


【解决方案1】:

我们转到文件config/app.php 并查找此条目:

/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

'timezone' => 'UTC',

如您所见,UTC 是 Laravel 的默认值。因此,您可以在此处轻松将其更改为,例如,Europe/LondonAmerica/Los_Angeles - 查看完整列表 PHP Supported Timezones

如果您更改此设置,很遗憾旧条目不会自动更改,但新条目将与您指定时区中的 created_at、updated_at 和类似字段一起保存。

【讨论】:

    【解决方案2】:

    我有一个类似的问题,我只是把我的国家区域和它对我有用

    'timezone' =>'America/Vancouver'
    

    设置脚本中所有日期/时间函数使用的默认时区

    http://php.net/manual/en/function.date-default-timezone-set.php

    【讨论】:

      【解决方案3】:

      您需要检查数据库,因为那里的数据类型是否相似,并且默认还检查您是否已将当前时间戳作为默认应用

      检查数据库。

      【讨论】:

        猜你喜欢
        • 2019-01-22
        • 2018-09-16
        • 1970-01-01
        • 1970-01-01
        • 2016-04-05
        • 2013-10-05
        • 1970-01-01
        • 2014-08-15
        • 1970-01-01
        相关资源
        最近更新 更多