代码之家  ›  专栏  ›  技术社区  ›  Neel

DST期间的Laravel Carbon无效日期时间格式错误

  •  1
  • Neel  · 技术社区  · 7 年前

    我正在使用Laravel 5.3并插入 datetime 在mysql列中,使用Carbon从控制器生成值。

    Next Illuminate\Database\QueryException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-10-01 02:29:54' for column 'invite_at' at row 1 (SQL: insert into `wedding_invitations` (`name`, `email`, `invite_at`, `updated_at`, `created_at`) values (Donald Trump, trump@donald.com, 2017-10-01 02:29:54, 2017-08-02 02:29:54, 2017-08-02 02:29:54)) in /home/myapp/applications/weddingapp/vendor/laravel/framework/src/Illuminate/Database/Connection.php:770
    

    我看到问题不是日期格式,因为 2017-10-01 02:29:54 AEST 我认为由于日光节约,10月12日凌晨2.59.59之间的时间不存在,因此发生了错误。这可能就是为什么我会出现这个错误。

    invite_at

    $invitationDate = Carbon::now()->addDays(60);
    

    我的问题是:

    1. 如何解决上述问题?因为我不想因为DST而输入无效的日期?我不想仅仅为了解决这个问题而改变mysql或服务器中的时区。

    2. 我在想的另一个想法是,当 addDays 23.59.59 因为这样可以避免这个错误。对我来说,日期比时间重要。所以如果我想 在里面 Carbon 要设定一个固定的时间,我该怎么做?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Oluwatobi Samuel Omisakin    7 年前

    为了让我的评论作为答案,无论出于何种原因:

    因为你关心的是日期而不是时间,所以你可以将从Carbon得到的date_时间值设置为 startOfDay() endOfDay() 即:

    $invitationDate = Carbon::now()->addDays(60)->endOfDay();
    

    另一种方法是简单地使用date作为 invited_by