Как преобразовать целое число в date_time? - PullRequest
2 голосов
/ 16 июня 2020

У меня есть среднее время. Я хочу вернуть формат времени, например «00:00:12». Как я могу это сделать?

a_function(){

  $sum_duration = Model::where('as_user_id',$this->id)->sum('duration');
  //sum_duration = 21
  $week_count = $first_impression->created_at->diffInWeeks($last_impression->created_at);
  //week_count = 2

  $time = date_create(round($sum_duration / ($week_count == 0? 1:$week_count)));
  //false

  return date_format( $time,"H:i:s");
}

Приведенный выше код не работает. Как я могу изменить формат отображения времени, например 00:00:00 ((H:i:s))

Ответы [ 3 ]

3 голосов
/ 16 июня 2020

Я полагаю, у вас есть Carbon;

$sum_duration = 21; // from your calculation
$week_count = 2; // from your calculation
$default = Carbon::now()->setTime(0, 0); // set as 00:00:00
$difference = round($sum_duration / ($week_count == 0 ? 1 : $week_count)); // your calculation
$default->addSeconds($difference); // add seconds to 00:00:00

return $default->format('H:i:s');

Отредактировано для seconds

2 голосов
/ 16 июня 2020

Предполагается, что продолжительность указана в минутах. Вы можете использовать метод gmdate () для его форматирования.

Пример:

gmdate("H:i:s", 123) // returns 00:02:03
0 голосов
/ 16 июня 2020

Продолжительность - это не даты. Но, тем не менее, это простой расчет:

printf('%02d:%02d:%02d', floor($seconds / 3600), floor($seconds / 60 % 60), $seconds % 60);

Демо

(переключитесь на sprintf(), если вы хотите сохранить или вернуть значение).

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