javascript - Laravel 时间戳格式/JavaScript 日期

标签 javascript php datetime laravel-5.1 php-carbon

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

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

最佳答案

要定义访问器,请在您的模型上创建一个 getFooAttribute 方法,其中 Foo 是您希望访问的列的“驼峰式”命名。 因此,您应该为 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;
...
}

关于javascript - Laravel 时间戳格式/JavaScript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33665325/

相关文章:

php - 如何使用 PHP 处理一页中的所有 URL?

php - MySQL行组查询

c# - C#中年、月、日的日期时间差异

php - DateTime 7 天后的 00 :00

javascript - 如何将相机图像作为附件传递给邮件。 (Android、iOS、Windows Phone、Phonegap)

javascript - 在不刷新页面的情况下更新 DataTables 表中的行

javascript - Asp.net MVC 5 将所有脚本 bundle 在一个文件中

javascript - SlickGrid 排序后重新应用/修复过滤器

magento - 如何在Magento中将产品缩略图添加到订单查看页面?

php - 优化远程页面检索和解析