Laravel时间戳格式/ JavaScript日期

时间:2015-11-12 06:04:00

标签: javascript php datetime laravel-5.1 php-carbon

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

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

3 个答案:

答案 0 :(得分:1)

在你看来,只需做这样的事情:

$variable->created_at->format('m-d-y')

答案 1 :(得分:0)

此页面here可能对熟悉Carbon日期以及如何使用和格式化它们非常有用。

关于将它们解析为Javascript可以解释的格式,也许你可以做这样的事情 - 假设它来自一个雄辩的对象,你已经进入了一个视图或类似的东西:

{{ (new Carbon\Carbon($dataPassedIn->created_at))->format('F d, Y H:ia') }}

哪个会返回类似September 02, 2015 09:43am的日期,尽管我不确定解析为javascript所需的确切格式。

答案 2 :(得分:0)

要定义访问者,请在模型上创建getFooAttribute方法,其中Foo是" camel"您希望访问的列的名称。 因此,您应该为test_date(或其他任何)属性定义一个访问者。尝试检索test_date的值时,Eloquent会自动调用访问者。

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

<?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;
    }
}

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

$user = User::find(1);
$user->test_date; //2015.11.12. 8:50:20

<小时/> 如果您想编写更简单的代码,则应使用Traits

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

<?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;
    }
 }

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

<?php

namespace App;

use Carbon\Carbon;

class User extends Model {
    use App\DateTrait;
...
}