在PHP LARAVEL中管理POST时间输出

问题描述 投票:0回答:1

使用智能时间管理器,通过表单发送的信息,我想转换表单时间输出,捕获:

public function getFormOutput(Request $request) 
{
    $request->except('_token');
    $startTimeInput = $request->input('starttime');
    $endTimeInput = $request->input('endtime');
    $breakTimeInput = $request->input('breaktime');
}

这里没有问题,值的格式为“xx:xx”


我现在正试图计算startTime和endTime之间的时差。

使用strtotime()不起作用:

$startTime = strtotime($startTimeInput);
$endTime = strtotime($endTimeInput);

他们都取得了价值:

1552550400

这似乎是1970年1月1日的时间,以毫秒为单位。


这是我的timeManager.blade.php视图:

{!! Form::open(['url'=>'agenda']) !!}
      {!! Form::label('starttime', 'Heure de début: ') !!}
      {!! Form::input('time', 'starttime') !!}
      <tr>
      {!! Form::label('endtime', 'Heure de fin: ') !!}
      {!! Form::input('time', 'endtime') !!}
      <tr>
      {!! Form::label('breaktime', 'Temps de pause: ') !!}
      {!! Form::input('time', 'breaktime') !!}
      <tr>
      {!! Form::submit('Envoyer' ) !!}
{!! Form::close() !!}

我的问题是:如何计算开始时间和结束时间之间的差异?

php laravel forms time http-post
1个回答
0
投票

试试这段代码来计算时间差:

第一种方法:

// calculate the start timestamp
$startdatetime = strtotime($startTimeInput);
// calculate the end timestamp
$enddatetime = strtotime($endTimeInput);
// calulate the difference in seconds
$difference = $enddatetime - $startdatetime;
// hours is the whole number of the division between seconds and SECONDS_PER_HOUR
$hoursDiff = $difference / 3600;
// and the minutes is the remainder
$minutesDiffRemainder = $difference % 3600;
// output the result
echo $hoursDiff . "hours " . $minutesDiffRemainder . "mins";

第二种方法:

$datetime1 = new DateTime($startTimeInput);
$datetime2 = new DateTime($endTimeInput);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%Y years, %M months, %D days, %I minutes, %S seconds');

我希望它会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.