راکت
حل شده

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

12 پاسخ

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

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

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

ثبت پرسش جدید

پاسخ‌ها

12
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

بهترین پاسخ

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

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

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

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

تخصص: Senior Backend Developer

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

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

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

تخصص: Senior Backend Developer

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

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

تخصص: Senior Backend Developer

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

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

تخصص: Senior Backend Developer

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

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

تخصص: Senior Backend Developer

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

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

تخصص: Senior Backend Developer

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

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

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

تخصص: Senior Backend Developer

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

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

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

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