محسن بستان
4 سال پیش توسط محسن بستان مطرح شد
12 پاسخ

اشتباه بودن timezone در moment.js

سلام.
دوستان بنده هر کاری میکنم moment js زمان رو درست نشون نمیده.

import moment from 'moment-timezone';
require('moment/locale/fa');
moment.tz.setDefault('Asia/Tehran');

اینترنت رو زیر رو کردم جوابی نبود. برای تایم زون های مختلف زمان رو تغییر میده اما روی تهران کاملا اشتباه و چند ساعت عقب تره :|


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش آپدیت شد
0

خوب مشخصه نگاه کنید الان سیستم نموته بفهمه این تایمی که شما اومدید ذخیره کردید مال چه موقعیت مکانی هست .
این زمان باید که شما تو دیتابیس دارید باید با حالت zone ذخیره سازی بشه اما اینطور نیست برای شما

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

اون قسمت +04:30 میبینید این مشخص میکنه .
حالا مسئله‌ای اگر زمان رو به شکل تهران ذخیره کردید دیگه از moment-timezone استفاده نکنید . چون لزومی نداره.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
1

منظورتون از اینکه زمان رو درست نشون نمیده چیه ؟ باید به چه شکلی نمایش بده ، چیزی که انتظار دارید نمایش بده رو بفرستید تا چک کنم


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

@hesammousavi
مشکل فرمت نیست.
مشکل اینه که مثلا اگر من در ساعت 23 داده ای رو در دیتابیس ذخیره کنم، moment js اون رو 19 نشون :( در واقع اون چیزی که moment نشون میده با اون چیزی که من در دیتابیس دارم کاملا متفاوته ( از نظر زمان مشکل داره فقط. تاریخ کاملا دسته)


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

@hesammousavi @ali.bayat
جالبه من برای تایم زون های مختلف امتحان کردم، کلا ساعت ها رو اشتباه بر می گردونه. برای مثال روی 'America/Los_Angeles' گذاشتم، وقتی که در 'America/Los_Angeles' ساعت 1:46 بود یک داده ثبت کردم و moment.js اون رو 21:16 نشون میده :|


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
0

شما زمان رو با momentjs اول تبدیل به تایم ایران میکنی و بعد ذخیره سازی میکنی و دوباره برگشت میدین ؟
حالا که برگشت دادید آیا دوباره با moment تبدیلش میکنید ؟


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

@hesammousavi
نه فقط برای نمایش اون رو تبدیل میکنم.


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

@hesammousavi
همین الان حساب کردم 4:30 اختلاف داره با ایران :| تایم زون رو گذاشتم توکیو ژاپن درست شد :/
به نظرتون مشکل از چیه ؟


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
0

بنظر باید ببینید که اون تایمی که ذخیره میکنید به چه تایم زونی ذخیره میشه احتمالا مشکل از اونجا باشه


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

@hesammousavi
توی دیتابیس کاملا درسته و به زمان تهران هستش. حتی توی tinker هم زمان درسته. :|
خود Date جاوا اسکریپت هم اشتباهه :|


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
0

ممنون میشم یکی از مقادیری که در دیتابس ذخیره کردید رو بفرستید ببینیم تامیش چه شکلیه !


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

@hesammousavi
توضیح تصویر رو وارد کنید

وقتی رو تهران ست میکنم، هر کدوم از ساعت ها رو 4:30 ساعت قبلش رو نشون میده دقیقا اما وقتی روی توکیو ژاپن باشه درست نشون میده


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش آپدیت شد
0

خوب مشخصه نگاه کنید الان سیستم نموته بفهمه این تایمی که شما اومدید ذخیره کردید مال چه موقعیت مکانی هست .
این زمان باید که شما تو دیتابیس دارید باید با حالت zone ذخیره سازی بشه اما اینطور نیست برای شما

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

اون قسمت +04:30 میبینید این مشخص میکنه .
حالا مسئله‌ای اگر زمان رو به شکل تهران ذخیره کردید دیگه از moment-timezone استفاده نکنید . چون لزومی نداره.


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

@hesammousavi
صحیح. واقعا مرسی :)
من اشتباهی توی مدل هام اومده بودم کست زیر رو قرار داده بودم :|

    protected $casts = [
        "created_at" => "datetime:Y-m-d H:i:s"
    ];

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

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