مهدی
5 سال پیش توسط مهدی مطرح شد
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 بشن و این مشکل هم نباشه
ممنون میشم اگر کسی اطلاع داره تجربه شو در اختیارم قرار بده


ثبت پرسش جدید
مهدی
تخصص : توسعه دهنده
@mehdi539 5 سال پیش مطرح شد
0

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


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();
}

محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
0

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

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

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


مهدی
تخصص : توسعه دهنده
@mehdi539 5 سال پیش آپدیت شد
0

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

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


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
0

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

php artisan optimize

مهدی
تخصص : توسعه دهنده
@mehdi539 5 سال پیش مطرح شد
0

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


مهدی
تخصص : توسعه دهنده
@mehdi539 5 سال پیش مطرح شد
0

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


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();
}

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

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