“从2020年3月10日到20日”,我需要从两个日期开始使用此日期格式

时间:2020-04-09 08:15:29

标签: php laravel

我有一个开始日期和结束日期。

从这些日期开始,我需要以以下格式打印日期。例如:

  • 开始日期:2020年10月3日
  • 结束日期:2020年3月20日

所需格式:

  • 2020年3月10日至20日
public function EventPromo($id){
    $event=events::where('id',$id)->with('Organization')->get();
    return view('participants.preview',compact('event'));
}

从这里我只获得开始日期格式。我需要结合开始日期和结束日期。

在laravel刀片中:

{{ date('l jS \\of F Y ', strtotime($event[0]->startDate)) }}
[在此处输入图片描述] [日期倒计时] 从这个开始和结束日期开始,我需要显示该事件必须到达和接近多少天,小时,分钟,秒。
<section class="section-swiper-content">
    <div class="container-fluid">
        <div class="row justify-content-lg-center countdown-container">
            <div class="" data-end-time="2020-03-10T00:00:00-03:00">
                <div class="countdown-member">
                    <span id="countdown-days" class="countdown-member-number">0</span>
                    <span id="countdown-days-label" class="countdown-member-label">Dias</span>
                </div>
                <div class="countdown-member">
                    <span id="countdown-hours" class="countdown-member-number">0</span>
                    <span id="countdown-hours-label" class="countdown-member-label">Horas</span>
                </div>
                <div class="countdown-member">
                    <span id="countdown-minutes" class="countdown-member-number">0</span>
                    <span class="countdown-member-label">Min</span>
                </div>
                <div class="countdown-member">
                    <span id="countdown-seconds" class="countdown-member-number">0</span>
                    <span class="countdown-member-label">Seg</span>
                </div>
            </div>
        </div>
    </div>
</section>

2 个答案:

答案 0 :(得分:0)

如果您总是在同一个月拥有它:

From {{ date('j', strtotime($event[0]->startDate)) }} 
to  {{ date('j', strtotime($event[0]->endDate)) }} 
    {{ date('F Y', strtotime($event[0]->endDate)) }} 

答案 1 :(得分:0)

我敢肯定,最干净的解决方案是确保laravel知道哪些字段是日期字段。

您可以为此使用日期变量:https://laravel.com/docs/7.x/eloquent-mutators#date-mutators

如果转到包含开始日期和结束日期的模型,则可以添加:

您的型号:

protected $dates = [
    'start_date',
    'end_date',
];

现在您的$model->start_date$model->end_date都是“碳”类。

然后,您可以使用访问器(https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor):

您的型号:

function getFormattedRuntimeAttribute()
{
    $start_day = $this->start_date->format('j');
    $end_day = $this->end_date->format('j');
    $end_month = $this->end_date->format('F');
    return "from $start_day to $end_day $end_month";
}

日期字母解释:https://www.w3schools.com/pHP/func_date_date.asp

然后在Blade中,您可以像这样使用模型:

{{ $model->formatted_runtime }} 

这应该输出类似:“从3月1日到10日”

请不要在开始日期和结束日期都在同一月份时这很有趣。否则,您将显示错误的开始日期。

您可以将其升级到:

function getFormattedRuntimeAttribute()
{
    $start_day = $this->start_date->format('j');
    $start_month = $this->start_date->format('F');
    $end_day = $this->end_date->format('j');
    $end_month = $this->end_date->format('F');
    $start_month =  ($start_month == $end_month) ? '' : ' '.$start_month;
    return "from $start_day$start_month to $end_day $end_month";
}

我希望这会有所帮助:)