Laravel 时间戳格式/JavaScript 日期
Laravel Timestamp Format / JavaScript Date
我环顾四周,但未能找到以特定格式返回 Laravel 时间戳/日期时间的明确方法。它如何保存在数据库中对我来说并不重要,但是当我提取数据时,我想格式化它以便它可以被 JavaScript 解析。有人知道不需要创建多个访问器的好方法吗?
编辑:为了添加更多细节,我实际上使用的是 AngularJS 并且希望以一种格式返回日期,以便 Angular 及其日期过滤器可以理解它。使用当前格式,日期过滤器不起作用,因为据我所知,它无法解析日期。
此页面 here 可能有助于熟悉 Carbon 日期以及如何使用和格式化它们。
关于将它们解析为 Javascript 可以解释的格式,也许你可以做这样的事情 - 假设它来自你拉入视图或其他东西的 eloquent 对象像那样:
{{ (new Carbon\Carbon($dataPassedIn->created_at))->format('F d, Y H:ia') }}
return 这样的日期 September 02, 2015 09:43am
,虽然我不确定解析为 javascript.
所需的确切格式
在您看来,只需执行以下操作即可:
$variable->created_at->format('m-d-y')
要定义访问器,请在您的模型上创建一个 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;
...
}
我环顾四周,但未能找到以特定格式返回 Laravel 时间戳/日期时间的明确方法。它如何保存在数据库中对我来说并不重要,但是当我提取数据时,我想格式化它以便它可以被 JavaScript 解析。有人知道不需要创建多个访问器的好方法吗?
编辑:为了添加更多细节,我实际上使用的是 AngularJS 并且希望以一种格式返回日期,以便 Angular 及其日期过滤器可以理解它。使用当前格式,日期过滤器不起作用,因为据我所知,它无法解析日期。
此页面 here 可能有助于熟悉 Carbon 日期以及如何使用和格式化它们。
关于将它们解析为 Javascript 可以解释的格式,也许你可以做这样的事情 - 假设它来自你拉入视图或其他东西的 eloquent 对象像那样:
{{ (new Carbon\Carbon($dataPassedIn->created_at))->format('F d, Y H:ia') }}
return 这样的日期 September 02, 2015 09:43am
,虽然我不确定解析为 javascript.
在您看来,只需执行以下操作即可:
$variable->created_at->format('m-d-y')
要定义访问器,请在您的模型上创建一个 getFooAttribute
方法,其中 Foo 是您希望访问的列的 "camel" 大小写名称。
因此,您应该为 test_date
(或任何其他)属性定义一个访问器。当试图检索 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;
}
}
那么你会看到默认的格式如下:
$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;
...
}