mahdi mehrabi
5 سال پیش توسط mahdi mehrabi مطرح شد
1 پاسخ

مقایسه دو تاریخ در لاراول

سلام خسته نباشید
من برای کاربرانم توی سایت توی دیتابیس users یه فیلدی داریم به اسم expire که توسط cronjob میاد هر نیم ساعت یک بار چک میشه که از زمان فعلی کوچیک تر نباشه اگر باشه به کاربر اس ام اس میره که عضویتت منقضی شد

$now = Carbon::now()->format('Y-m-d h:i:s');
        $applicants = Applicant::whereDate('expire', '<', $now)->get();

کد به صورت بالا هستش applicant همون user هستش
مشکل اینجاست با این که هم تاریخ هم زمان ذخیره میشه و ساعت expire روی 12:00:00 نیست و روی ساعت های مختلفه بازهم sms ها ساعت 4:30 دقیقه صبح میره یعنی دقیقا به ساعت جهانی 12:00 که شروع هر روز هستش میره


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 5 سال پیش آپدیت شد
2

سلام. چند نکته:

اول از همه اینکه چک کنید در فایل config/app.php مقدار timezone برای ایران تنظیم شده باشه:

'timezone' => 'Asia/Tehran',

دوم اینکه نوع مقداری که برای ستون expire قرار دادید حتما از نوع DATETIME باشه.

سوم اینکه به نظرم برای نیاز شما باید بجای whereDate از where استفاده کنید. یعنی جایگزین دو خط بالا این میشه:

$applicants = Applicant::where('expire', '<', Carbon::now())->get();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام