使用 Carbon 将 mySQL 日期转换为 Laravel 5.2 中的英国时间格式?
Convert a mySQL date to a British time format in Laravel 5.2 using Carbon?
我的日期时间选择器错误地将日期显示为 2026 年 5 月 20 日,因为它在 MySQL 中存储为 2016-05-26。
目前我认为这是我应该做的:
$startDate = new Carbon ('d/m/Y H:i:s', $dateFromDB->startdate);
$dateFromDatabase = "2016-05-20";
$dt = Carbon::createFromFormat('Y-m-d', $dateFromDatabase);
// Where js F Y results in 20th May 2016
echo $dt->format('jS F Y');
转换两次,为什么?
关于你的问题,我遇到的一个问题是你从数据库中获取的日期为 Y-m-d
,然后将其转换为 d/m/Y H:i:s
,然后你的日期选择器将其显示为 [=17] =],难道你不能削减一次转换而不是转换两次吗?需要考虑的事情。
新建一个 Carbon 实例
如果您从数据库中获取的日期为 Y-m-d
,那么您可以直接将其传递到您正在新建的 Carbon 实例中:
$startDate = new Carbon($dateFromDB->startdate);
查看文档:http://carbon.nesbot.com/docs/#api-instantiation
然后就可以使用format()
的方法输出想要的日期格式了:
$startDate->format('d/m/Y H:i:s'); // 26/05/2016 09:30:05
$startDate->format('jS F Y'); // 26th May 2016
Eloquent
中的日期突变器
如果您使用 eloquent 获取要转换的日期,您可以考虑的另一种方法是通过将日期添加到模型中的 $dates
属性来自动将日期转换为 Carbon 实例.
例如,如果您的日期在您的模型中是 start_date
,您可以这样做:
class MyModel extends Model
{
protected $dates = ['start_date'];
}
然后您可以在您的代码中将其作为 Carbon 实例直接访问:
MyModel::first()->start_date->format('d/m/Y H:i:s');
查看文档:https://laravel.com/docs/5.2/eloquent-mutators#date-mutators
仅使用 PHP
您也可以像这样使用普通的旧 PHP 来获取您需要的日期格式:
$date = '2016-05-26 09:30:05';
$startDate = date('d/m/Y H:i:s', strtotime($date)); // 26/05/2016 09:30:05
$startDate = date('jS F Y', strtotime($date)); // 26th May 2016
我的日期时间选择器错误地将日期显示为 2026 年 5 月 20 日,因为它在 MySQL 中存储为 2016-05-26。 目前我认为这是我应该做的:
$startDate = new Carbon ('d/m/Y H:i:s', $dateFromDB->startdate);
$dateFromDatabase = "2016-05-20";
$dt = Carbon::createFromFormat('Y-m-d', $dateFromDatabase);
// Where js F Y results in 20th May 2016
echo $dt->format('jS F Y');
转换两次,为什么?
关于你的问题,我遇到的一个问题是你从数据库中获取的日期为 Y-m-d
,然后将其转换为 d/m/Y H:i:s
,然后你的日期选择器将其显示为 [=17] =],难道你不能削减一次转换而不是转换两次吗?需要考虑的事情。
新建一个 Carbon 实例
如果您从数据库中获取的日期为 Y-m-d
,那么您可以直接将其传递到您正在新建的 Carbon 实例中:
$startDate = new Carbon($dateFromDB->startdate);
查看文档:http://carbon.nesbot.com/docs/#api-instantiation
然后就可以使用format()
的方法输出想要的日期格式了:
$startDate->format('d/m/Y H:i:s'); // 26/05/2016 09:30:05
$startDate->format('jS F Y'); // 26th May 2016
Eloquent
中的日期突变器如果您使用 eloquent 获取要转换的日期,您可以考虑的另一种方法是通过将日期添加到模型中的 $dates
属性来自动将日期转换为 Carbon 实例.
例如,如果您的日期在您的模型中是 start_date
,您可以这样做:
class MyModel extends Model
{
protected $dates = ['start_date'];
}
然后您可以在您的代码中将其作为 Carbon 实例直接访问:
MyModel::first()->start_date->format('d/m/Y H:i:s');
查看文档:https://laravel.com/docs/5.2/eloquent-mutators#date-mutators
仅使用 PHP
您也可以像这样使用普通的旧 PHP 来获取您需要的日期格式:
$date = '2016-05-26 09:30:05';
$startDate = date('d/m/Y H:i:s', strtotime($date)); // 26/05/2016 09:30:05
$startDate = date('jS F Y', strtotime($date)); // 26th May 2016