【问题标题】:How to fix incorrect date and time of laravel when updating date and time in mysql在mysql中更新日期和时间时如何修复laravel的错误日期和时间
【发布时间】:2019-06-10 05:41:15
【问题描述】:

我目前在我的数据库中插入不正确的日期和时间时遇到问题,我目前使用 laravel,在我的 app.php 中 'timezone' => 'Canada/Central', 今天我插入了一个我的时间和日期是晚上 11:23 / 2019 年 9 月 6 日的订单,然后在我将订单插入数据库后,根据我的时间,order_date 不正确。

我的时间和日期:

订单日期和时间插入数据库:

我会把我的脚本和代码分享给你们:

$now = new DateTime();

DB::insert('INSERT INTO order_properties (customer_id,order_ship_address,delivery_status,order_ship_province,order_date,transaction_number) 
        VALUES (?,?,?,?,?,?) ',[

        $hidden_customer_id,
        $hidden_customer_address,
        'Processing',
        Auth::user()->manager_location_assign,
        $now,
        $sessionTransactionNumber


    ]);

【问题讨论】:

  • 您是否尝试过清除配置缓存。只需运行php artisan config:clear 并清除缓存php artisan cache:clear。大多数时候,每当我们更改配置时。我们需要重新启动我们的服务器(php artisan serve)。所以 laravel 知道新的变化
  • 是的,我已经在我们的服务器上这样做了。但我弄错了时间和日期。
  • 如果您的列格式是日期时间或时间戳,您也可以使用 'now' 代替它,而不是使用 php datetime。还要检查你的mysql时区here
  • 我插入今天晚上 11:52,然后在我的 order_date 列中插入 6:00:15

标签: php mysql laravel


【解决方案1】:

确保您在设置时间期间使用了时区。其他人更喜欢使用 Eloquent 进行数据插入。

PHP DateTime 类不会自动读取 laravel 设置。

我还建议将时区保留在 .env 文件中,以便可以在整个应用程序中访问它。这是您可以为此做的事情。

  1. 在 .env 中添加新密钥 APP_TIMEZONE

    APP_TIMEZONE="America/Chicago" //change as per your timezone.

  2. 更新 config/app.php 以使用 .env 设置。

    "timezone" = env("APP_TIMEZONE", "UTC");

  3. 您必须使用Carbon 库并更改代码以获取类似时区

    $now = Carbon::now(env("APP_TIMEZONE"));

还要确保您的时区Canada/Central 必须在 php 支持列表中可用。

这里是PHP支持的时区https://www.w3schools.com/php/php_ref_timezones.asp

【讨论】:

  • 你知道如何使用多个应用时区吗??我同时需要 3 个时区
  • 我使用卡尔加里、温尼伯、埃德蒙顿时区
  • @DevGe 您想在三个不同的时区显示相同的日期吗?你的实际要求是什么。
  • 三个省的时间和日期不同,所以如果我在埃德蒙顿,那么我在时区的配置是针对温尼伯的,所以它与埃德蒙顿不同。
  • 那么它如何使用加拿大所有城市或省份的时区。
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多