我有各種用戶存儲在數據庫中。我需要檢查每個用戶的日期并將今天的日期與數據庫中的日期進行比較,如果今天是數據庫中日期的第 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"

夢里花落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 是處理時區和夏令時的更好方法。

吃雞游戲
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"; }
- 3 回答
- 0 關注
- 169 瀏覽
添加回答
舉報
0/150
提交
取消