Laravel 5.2 - рассчитать дату истечения срока действия моего сообщения

Я хотел бы, чтобы пользователь мог выбрать срок действия сообщения, например, в форме создания сообщения я вставлю параметр выбора ввода с: 24 часа, 48 часов, 72 часа.

Мой вопрос, мне нужно сохранить дату истечения срока действия в моей базе данных, как я могу ее рассчитать?

Я знаю, что могу получить время создания сообщения следующим образом:

ВИД - МОЯ форма имеет такой ввод

<select name="expire_date">
<option value="24">24h</option> 
<option value="48">48h</option>
<option value="72">72h</option>
</select>

МОЙ КОНТРОЛЛЕР

 // get the current time  
    $current = Carbon::now();
    $current = new Carbon();
    // maybe so ?? 
    $expire_date = $current + $request->input('expire_date')

я хотел бы создать переменную со значением даты истечения срока действия сообщения, мне нужно сохранить эти данные, чтобы я мог показать их в своем индексном списке.

Спасибо за Вашу поддержку!


person Diego Cespedes    schedule 17.10.2016    source источник


Ответы (3)


Вы можете сделать что-то подобное на своем контроллере: при условии, что у вас есть Input::all() в вашей переменной запроса.

$expire_date = Carbon::now()->addHours($request->expire_date);  

как вы можете увидеть в углеродном документе

person Rocco Milluzzo    schedule 17.10.2016

Класс PHP DateTime сделает это довольно успешно, как это

//example input parameter
$param = '24h';
// fix param, to upper case i.e. 24H
$param = strtoupper($param);

$date = new DateTime();
echo $date->format('Y-m-d H:i:s').PHP_EOL; 
$date->add(new DateInterval("PT$param"));
echo $date->format('Y-m-d H:i:s'); 

Результат:

2016-10-17 19:58:56
2016-10-18 19:58:56
person RiggsFolly    schedule 17.10.2016

Вы можете использовать strtotime, который может выполнять такие вычисления.

$expire_date = strtotime('+ '.$request->input('expire_date').' hours');

Другим подходом было бы добавление секунд «вручную»:

$expire_date = time() + $request->input('expire_date') * 3600;
person jakub wrona    schedule 17.10.2016