首页 > 解决方案 > Laravel - 日期/时间查询的不同格式

问题描述

我正在学习 Laravel,并且在控制器上遇到了一些小问题 - 当我使用 DB 时,查询返回没有时区的日期时间,但如果我使用模型,则查询返回完整的日期时间。

    public function test($switch)
    {
        //return "YYYY-MM-DDThh:mm:ss.000000Z"
        if ($switch) return Position::select('id','created_at')->orderBy('id')->get();

        // return "YYYY-MM-DD hh:mm:ss"
        return DB::table('positions')->select('id','created_at')->orderBy('id')->get();
    }

为什么?我需要在这两种情况下都想要“YYYY-MM-DDThh:mm:ss.000000Z”吗?感谢您的解决方案。

谢谢你的建议

标签: laraveldatetimedate-formatdate-formatting

解决方案


它们是相同的数据,可能只是不同的日期类别,您始终可以格式化您的日期。Laravel 使用了优秀的 Carbon 日期库,应该主要使用。

如果您尝试使用get_class()Eloquent Position created_at 打印日期类,您可能得到了 Carbon 和 DB::table('positions') created_at,您可能得到了 DateTime,这就是值看起来不同的原因(但您仍然得到相同的日期)。

如果你想将你的 DateTime 转换为 Carbon,你可以这样做

$newDate = new \Carbon\Carbon($position->created_at)

推荐阅读