راکت
حل شده

تاریخ و زمان اشتباه در زمان نمایش

5 پاسخ

سلام دوستان @hesammousavi
از نسخه 7 لاراول استفاده میکنم
توی این نسخه مشکلی برام پیش اومده

من توی فایل کانفیگ برنامه TimeZone رو روی Asia/Tehran ست کردم و وقتی یه رکوردی رو با الکوئنت ذخیره میکنم تاریخ و ساعت بدرستی و طبق ساعت ایران ذخیره میشه توی ستون CreatedAt و UpdatedAt جدول ولی وقتی دارم اطلاعات اون تیبل رو واکشی میکنم ساعت رو انگار میکشه عقب و طبق گرینویچ (UTC) میاره
به این شکل که مثلا اگر مقدار داخل created_at هست 2020-04-22 13:25:03 ، در زمان واکشی اطلاعات میاره 2020-04-22 08:55:03

توی مدلش کست هم کردم به فرمت تاریخ ولی باز UTC اش میکنه و نشون میده ، انگار یجایی از سیستم باید تنظیم بشه
البته وقتی public $timestamps = false; باشه در زمان واکشی درست میشه ولی من میخوام createdat , updatedat موقع create بصورت خودکار insert بشن و این مشکل هم نباشه
ممنون میشم اگر کسی اطلاع داره تجربه شو در اختیارم قرار بده

ثبت پرسش جدید

پاسخ‌ها

5
مهدی
مهدی
@mehdi539

تخصص: توسعه دهنده

بهترین پاسخ

کاری که خودم کردم و حل شد اینه :
توی مدل ها دوتا متد زیر رو اضافه کردم


public function getCreatedAtAttribute($value)
{
    return Carbon::createFromTimestamp(strtotime($value))->timezone(Config::get('app.timezone'))->toDateTimeString();
}

public function getUpdatedAtAttribute($value)
{
    return Carbon::createFromTimestamp(strtotime($value))->timezone(Config::get('app.timezone'))->toDateTimeString();
}
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@mehdi539
سلام.
من تقریبا چنین مشکلی داشتم. دقیق متوجه نشدم چی کار کردید اما نکته ای که هست فرمت تاریخ باید مثل زیر باشه :

2020-04-08T18:12:25+04:30

در واقع باید انتهای اون تایم زون مشخص شده باشه تا بتونه تشخیص بده. من مدل رو کست کرده بودم و اون قسمت حذف شده بود و مشکل برام پیش اومد شما هم بررسی کنید که آیا مشکلتون به این صورته یا نه.

مهدی
مهدی
@mehdi539

تخصص: توسعه دهنده

@mohsenbostan برای من داره به این شکل بر میگردونه
2020-04-22T09:54:21.000000Z و مقدار ذخیره شده در دیتابیس دقیقا به این شکله : 2020-04-21 22:16:20
در حالی که من توی فایل کانفیگ Asia/Tehran رو ست کردم

موقع ثبت در دیتابیس دقیقا طبق تایم زونی که ست کردم ذخیره میکنه ولی موقع واکشی اطلاعات 2020-04-22T09:54:21.000000Z اینجوری بر میگردونه

شاید پاسخ شما همین‌جا باشد

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@mehdi539
یک دور کش رو پاک کنید دوباره تست کنید :

php artisan optimize
مهدی
مهدی
@mehdi539

تخصص: توسعه دهنده

هزاربار انجام دادم
جالبه با فساد DB درست برمیگرده ولی با Eloquent این اتفاق می افته

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

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