猿问

将今天与数据库中的日期进行比较,并检查天气是否比今天早了 30 天

我有各种用户存储在数据库中。我需要检查每个用户的日期并将今天的日期与数据库中的日期进行比较,如果今天是数据库中日期的第 30 天,则执行curl。以下是我的代码


public function repeatPayment()

{

    //return "hi22";

    $users=Payment::all();

    foreach ($users as $user)

    {

        $trans_id = $user->transactionid;

        $clinicid = $user->clinicID;

        $last_transaction_date = $user->updated_at;

        echo $last_transaction_date."<br>";

        if (strtotime($last_transaction_date) < strtotime('-30 days')) {

            echo "hello";

        }

        $payment = array(

            "MerchantID"=> "0000000001",

            "Login"=> "API0000000001",

            "Password"=> "Temp1234!",

            "NewExpDate"=> "102020",

            "Amount"=> "29.99",

            "Token"=>$trans_id,

            "StandardEntryCode"=> "string",

            "AuthOnly"=> false

        );

        

        $post_field = json_encode($payment);

        // var_dump($post_field);

        // die();

        $ch = curl_init();

        $headers = array(

            "Content-type: application/json",

            "Cache-Control: no-cache",

        );

        curl_setopt($ch, CURLOPT_URL,"https://api.securepds.com/2.0/payments.svc/JSON/SubmitTokenPayment");

        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch, CURLOPT_POSTFIELDS,$post_field);

        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        

        $server_output = curl_exec($ch);

        curl_close ($ch);

        $payment_id=  json_decode($server_output,true);

        $newTransId= new CronJob;

        $newTransId->clinic_id = $clinicid;

        $newTransId->tranascation_id = $payment_id["Confirmation"];

        $newTransId->transaction_date = date('d/m/Y');

        $newTransId->save();

    }

}


精慕HU
浏览 113回答 3
3回答

森栏

我想添加一个答案,因为我认为到目前为止的答案对于解决一个简单的问题来说有点太多了。$user->updated_at字段是一个 Carbon 日期实例,因此$last_transaction_date也是。Carbon 有一个函数diffInDays()可以给你提供今天和给定日期之间的天数差异。所以对于OP来说,我相信这样的事情会更简单。if(&nbsp;$last_transaction_date->diffInDays()&nbsp;>&nbsp;30&nbsp;) &nbsp;&nbsp;echo&nbsp;"more&nbsp;than&nbsp;30&nbsp;days"

梦里花落0921

假设您在 MySQL 和 Php 配置中具有相同的时区和日期格式。下面是可以完成您的工作的代码片段:$datetime1 = new DateTime('2020-06-15');$datetime2 = new DateTime();$interval = $datetime1->diff($datetime2);$days_diff = intval($interval->format('%a'));if($days_diff > 30 ){&nbsp; &nbsp; //Do your stuffs}DateTime 是处理时区和夏令时的更好方法。

吃鸡游戏

您可以按如下方式使用 Carbon:if&nbsp;(30&nbsp;-&nbsp;((new&nbsp;\Carbon\Carbon($last_transaction_date,&nbsp;'UTC'))->diffInDays())&nbsp;<&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"The&nbsp;date&nbsp;is&nbsp;older&nbsp;than&nbsp;30&nbsp;days"; }或者,如果您只想检查是否是一天的开始,那么使用 Carbon 进行检查相当容易endOfDay():if(&nbsp;$last_transaction_date->endOfDay->diffInDays()&nbsp;>&nbsp;30&nbsp;){ &nbsp;&nbsp;&nbsp;echo&nbsp;"older&nbsp;than&nbsp;30&nbsp;days"; }
随时随地看视频慕课网APP
我要回答