«С 10 по 20 марта 2020 года» мне нужен этот формат даты из двух дат - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть дата начала и окончания.

Из этих дат мне нужно распечатать даты в следующих форматах. Например:

  • Дата начала: 10/03/2020
  • Дата окончания: 20 / 03/2020

Необходимый формат:

  • С 10 по 20 марта 2020 года
public function EventPromo($id){
    $event=events::where('id',$id)->with('Organization')->get();
    return view('participants.preview',compact('event'));
}

Из этого я получаю только формат начальной даты , Мне нужно объединить дату начала и окончания.

В laravel blade:

{{ date('l jS \\of F Y ', strtotime($event[0]->startDate)) }}
[введите описание изображения здесь] [обратный отсчет дат] из этой даты начала и окончания, которую мне нужно показать сколько дней, часов, минут, се c для события должно прийти и близко.
<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 голосов
/ 09 апреля 2020

Я уверен, что самым чистым решением было бы убедиться, что laravel знает, какие поля являются полями даты.

Для этого можно использовать мутаторы даты: https://laravel.com/docs/7.x/eloquent-mutators#date -mutators

Если вы go к модели, содержащей начальную дату и конечную дату, вы можете добавить:

Ваша модель:

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

Теперь ваши $model->start_date и $model->end_date оба класса 'Carbon'.

Затем вы можете использовать метод доступа (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

Затем в блейде вы можете использовать модель следующим образом:

{{ $model->formatted_runtime }} 

Это должно вывести что-то вроде : 'с 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";
}

Надеюсь, это поможет:)

0 голосов
/ 09 апреля 2020

Если вы всегда будете иметь его в том же месяце:

From {{ date('j', strtotime($event[0]->startDate)) }} 
to  {{ date('j', strtotime($event[0]->endDate)) }} 
    {{ date('F Y', strtotime($event[0]->endDate)) }} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...