为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
精慕HU 2023-08-06 15:43:20
我有各种用户存储在数据库中。我需要检查每个用户的日期并将今天的日期与数据库中的日期进行比较,如果今天是数据库中日期的第 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();    }}
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我想添加一个答案,因为我认为到目前为止的答案对于解决一个简单的问题来说有点太多了。

$user->updated_at字段是一个 Carbon 日期实例,因此$last_transaction_date也是。Carbon 有一个函数diffInDays()可以给你提供今天和给定日期之间的天数差异。所以对于OP来说,我相信这样的事情会更简单。

if( $last_transaction_date->diffInDays() > 30 )
  echo "more than 30 days"


查看完整回答
反对 回复 2023-08-06
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

假设您在 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 ){

    //Do your stuffs

}

DateTime 是处理时区和夏令时的更好方法。


查看完整回答
反对 回复 2023-08-06
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您可以按如下方式使用 Carbon:

if (30 - ((new \Carbon\Carbon($last_transaction_date, 'UTC'))->diffInDays()) < 0) {
    echo "The date is older than 30 days";
}

或者,如果您只想检查是否是一天的开始,那么使用 Carbon 进行检查相当容易endOfDay()

if( $last_transaction_date->endOfDay->diffInDays() > 30 ){
   echo "older than 30 days";
}


查看完整回答
反对 回复 2023-08-06
  • 3 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信