如何在Laravel5.4中减去两个日期

时间:2017-10-07 17:25:47

标签: laravel date laravel-5 laravel-5.4 php-carbon

我将用户项目保存在其中的项目表并具有start_time和finish_time及价格,我将其作为具有此代码的表单提供:

<div class="form-group">
   <input type="date" class="form-control" name="start_time" >
 </div>

 <div class="form-group">
 <input type="date" class="form-control" name="finish_time" >
 </div>

 <div class="form-group">
 <input type="text" class="form-control" name="price" >
 </div>

现在,我想减去日期,如果结果是负数可以乘以价格和结果,我该怎么做?

3 个答案:

答案 0 :(得分:2)

你应该做的是这样的事情:

$start_time = \Carbon\Carbon::parse($request->input('start_time'));
$finish_time = \Carbon\Carbon::parse($request->input('finish_time'));

$price = $request->input('price');

$result = $start_time->diffInDays($finish_time, false);

if ($result < 0) {
  $price = $price * $result;
}

我不知道您要减去哪个日期,因此请确保您有效。你应该使用:

$result = $start_time->diffInDays($finish_time, false);

$result = $finish_time->diffInDays($start_time, false);

请记住,您需要将false作为第二个参数传递给diffInDays方法 - 否则您将始终获得正面结果。

答案 1 :(得分:0)

在您的控制器方法中,您可以计算差异:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners
        android:bottomLeftRadius="16dp"
        android:bottomRightRadius="16dp"
        android:radius="32dp"
        android:topLeftRadius="16dp"
        android:topRightRadius="16dp" />

    <solid android:color="@color/tab_color" />

    <padding
        android:bottom="0dp"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp" />

    <size
        android:height="32dp" />


</shape>

或者您可以使用静态Carbon :: parse()方法:

   $start_time = $request->input('start_time');
   $start_time_ob = new \Carbon\Carbon($start_time);

出于您的目的,您可以使用以下完整示例:

$finish_time = $request->input('finish_time');
$finish_time_ob = \Carbon\Carbon::parse($date);

答案 2 :(得分:0)

到期日期

$expirydate = \Carbon\Carbon::parse($object->end_date);
  

$ expirydate = 2020-06-09 00:00:00

返回当前日期

$today = \Carbon\Carbon::now();
  

$ today = 2019-09-05 13:53:47

剩余的剩余天数

$difference = $today->diffInDays($expirydate, false)
  

$ difference = 277

还有277天要过期。

  

如果天数为负数,则表示它已过期,否则   尚未过期。