Laravel 时间戳格式/JavaScript 日期

ken*_*in9 5 javascript php datetime php-carbon laravel-5.1

我环顾四周,但找不到以特定格式返回 Laravel 时间戳/日期时间的明确方法。它是如何保存在数据库中的对我来说并不重要,但是当我提取数据时,我想对其进行格式化,以便它可以被 JavaScript 解析。有人知道一种不需要创建多个访问器的好方法吗?

编辑:要添加更多细节,我实际上使用的是 AngularJS,并希望以某种格式返回日期,以便 Angular 及其日期过滤器可以理解它。使用当前格式,日期过滤器不起作用,因为它无法解析日期,据我所知。

Pet*_*ota 1

要定义访问器,请getFooAttribute在模型上创建一个方法,其中 Foo 是您要访问的列的“驼峰式”名称。因此,您应该为test_date(或其他任何)属性定义一个访问器。当尝试检索 的值时,Eloquent 将自动调用该访问器test_date

(在示例中,我将在用户模型中定义它)

<?php

namespace App;

use Carbon\Carbon;

class User extends Model {
    protected $table = 'users';

    public function getTestDateAttribute($date) {
        //What format do you store in db?
        $storedformat = createFromFormat('Y-m-d H:i:s', $date);
        //What format would you like to show?
        $customformat = $storedformat->format('Y.m.d. H:i:s');
        return $customformat;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你会默认看到以下格式:

$user = User::find(1);
$user->test_date; //2015.11.12. 8:50:20
Run Code Online (Sandbox Code Playgroud)


如果您想编写更简单的代码,您应该使用Traits

让我们在文件中定义 DateTrait App\DateTrait.php

<?php

trait DateTrait {
    public function getTestDateAttribute($date) {
        //What format do you store in db?
         $storedformat = createFromFormat('Y-m-d H:i:s', $date);
         //What format would you like to show?
         $customformat = $storedformat->format('Y.m.d. H:i:s');
         return $customformat;
    }
 }
Run Code Online (Sandbox Code Playgroud)

然后在您想要设置test_date列格式的每个模型中使用它。

<?php

namespace App;

use Carbon\Carbon;

class User extends Model {
    use App\DateTrait;
...
}
Run Code Online (Sandbox Code Playgroud)