【问题标题】:Convert a mySQL date to a British time format in Laravel 5.2 using Carbon?使用 Carbon 在 Laravel 5.2 中将 mySQL 日期转换为英国时间格式?
【发布时间】:2016-05-24 09:38:15
【问题描述】:

我的 datetimepicker 错误地将日期显示为 2026 年 5 月 20 日,因为它在 MySQL 中存储为 2016-05-26。 目前我认为这是我应该做的:

$startDate = new Carbon ('d/m/Y H:i:s', $dateFromDB->startdate);

【问题讨论】:

标签: laravel date php-carbon


【解决方案1】:

转换两次,为什么?

我对您的问题的一个问题是您从数据库中获取日期为Y-m-d,然后将其转换为d/m/Y H:i:s,然后您的日期选择器将其显示为jS F Y,你不能剪掉吗进行一次转换而不是转换两次?需要考虑的事情。

新建一个 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

【讨论】:

  • 太棒了!我熟悉 PHP date() 函数和较新的 DATETIME()。但是我想使用一点 Carbon,因为我的应用程序是在 Laravel 中的,并且拥有它提供的安全功能会很好。感谢一百万,这真的很有帮助!
  • @omrakhur 非常欢迎您,很高兴我能帮上忙! Carbon 内置了很多功能,因此请考虑深入研究文档和源代码以从中获得更多信息。编码愉快!
【解决方案2】:
$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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2017-01-29
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2019-12-18
    相关资源
    最近更新 更多