在Laravel Blade中格式化动态日期

时间:2018-06-27 04:12:44

标签: php laravel date laravel-5 laravel-blade

我正在处理HTML电子邮件,其中有一个日期部分,我想在其中放置占位符,因为它是动态数据。

我使用日期的HTML代码是:

<tr>
   <td style="padding-bottom: 3%;text-align:right;">when:</td>
   <td style="padding-bottom: 3%;padding-left: 8%;">Mar 28/18 @ 7:00pm to <br> Mar 30/18 @ 7:00pm</td>
</tr>

问题

我想知道要代替Mar 28/18 @ 7:00pm to <br> Mar 30/18 @ 7:00pm,我需要哪个占位符来正确格式化日期变量?

1 个答案:

答案 0 :(得分:0)

根据动态日期数据的类型,您需要采取不同的操作。

格式化Carbon实例

{{ $start->format('M d/y @ h:ma') }} to <br> {{ $end->format('M d/y @ h:ma') }}

格式化原始时间戳

{{ date('M d/y @ h:ma', $start) }} to <br> {{ date('M d/y @ h:ma', $end) }}

格式化有效的日期字符串

{{ date('M d/y @ h:ma', strtotime($start)) }} to <br> {{ date('M d/y @ h:ma', strtotime($end)) }}

使用自定义Blade指令格式化日期

扩展Blade以使用新的@datetime指令。添加一个BladeServiceProvider并在其boot方法中注册该指令。

您也可以将其添加到已经存在的AppServiceProvider中。

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class BladeServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Blade::directive('datetime', function ($expression) {
            return "<?php echo ($expression)->format('M d/y @ h:ma'); ?>";
        });
    }
}

有了这些并考虑Carbon实例,您的视图代码将是:

@datetime($start) to @datetime($end)

不用说,您可以轻松地将代码修改为其他日期类型。