خلاصه
ساعت سختافزاری کامپیوتر شما زمان را حتی زمانی که کامپیوتر خاموش است، ذخیره میکند. ویندوز زمان را به صورت محلی (local time) در نظر میگیرد، در حالی که لینوکس زمان را بر اساس UTC (زمان هماهنگ جهانی) فرض میکند که این امر باعث اختلاف زمانی در حالت بوت دوگانه میشود.
برای اینکه لینوکس از زمان محلی استفاده کند، دستور timedatectl set-local-rtc 1 –adjust-system-clock را در ترمینال اجرا کنید.
برای اینکه ویندوز از زمان UTC استفاده کند، گزینه “Set Time Automatically” را در برنامه Settings غیرفعال کنید یا میتوانید رجیستری را ویرایش نمایید.
کامپیوتر شما زمان را در یک ساعت سختافزاری روی مادربورد ذخیره میکند. این ساعت حتی زمانی که کامپیوتر خاموش است، زمان را نگه میدارد. به طور پیشفرض، ویندوز فرض میکند که زمان به صورت محلی (local time) ذخیره شده است، در حالی که لینوکس فرض میکند زمان به صورت UTC ذخیره شده و یک آفست (اختلاف زمانی) را برای نمایش زمان محلی اعمال میکند. این موضوع منجر به این میشود که یکی از سیستمعاملهای شما در حالت بوت دوگانه، زمان را اشتباه نشان دهد.
برای رفع این مشکل، شما دو راه حل دارید: کاری کنید که لینوکس از زمان محلی استفاده کند، یا کاری کنید که ویندوز از زمان UTC استفاده کند. هر دو دستورالعمل را دنبال نکنید، وگرنه باز هم زبان مشترکی نخواهند داشت! ما توصیه میکنیم در صورت امکان، لینوکس را وادار به استفاده از زمان محلی کنید.
برای رفع اختلاف زمانی، لینوکس را وادار به استفاده از زمان محلی کنید
اینکه لینوکس را وادار کنید همانند ویندوز از زمان محلی استفاده کند، احتمالاً بهترین گزینه است. ویندوز یک تنظیم در رجیستری برای وادار کردن آن به ذخیره زمان به صورت UTC دارد، اما گزارش شده که این تنظیم به خوبی پشتیبانی نمیشود و ممکن است با برخی برنامههای جانبی که همیشه ساعت سختافزاری را بر مبنای زمان محلی فرض میکنند، مشکل ایجاد کند. همچنین با سرویس همگامسازی زمان اینترنتی خود ویندوز نیز ناسازگار است.
مراحل وادار کردن سیستم لینوکس شما به استفاده از زمان محلی ممکن است بسته به توزیع لینوکس متفاوت باشد. با این حال، در هر توزیع لینوکسی که از systemd استفاده میکند، میتوانید از دستور timedatectl برای این تغییر استفاده کنید. این دستور بر روی نسخههای مدرن اوبونتو، فدورا، رد هت، دبیان، مینت و سایر توزیعهای لینوکس که از systemd استفاده میکنند، کار خواهد کرد.
برای اعمال این تغییر، ابتدا یک پنجره ترمینال در سیستم لینوکس خود باز کنید. دستور زیر را اجرا کنید تا ساعت زمان واقعی (real time clock) روی مادربورد را بر روی زمان محلی تنظیم کنید. با این کار، لینوکس زمان را درست مانند ویندوز به صورت محلی ذخیره خواهد کرد.
timedatectl set-local-rtc 1 --adjust-system-clock

پس از اجرای دستور، هیچ پیغامی دریافت نخواهید کرد. برای بررسی تنظیمات فعلی خود، دستور زیر را اجرا کنید:
timedatectl

اگر خروجی شامل “RTC in local TZ: yes” بود، یعنی لینوکس برای استفاده از منطقه زمانی محلی به جای UTC تنظیم شده است. این دستور به شما هشدار میدهد که این حالت به طور کامل پشتیبانی نمیشود و ممکن است هنگام تغییر بین مناطق زمانی و با تغییرات ساعت تابستانی (daylight savings time) مشکلاتی ایجاد کند. با این حال، این حالت احتمالاً بهتر از گزینه UTC در ویندوز پشتیبانی میشود. اگر از بوت دوگانه با ویندوز استفاده میکنید، ویندوز تغییرات ساعت تابستانی را برای شما مدیریت خواهد کرد.
اگر زمانی خواستید این تغییر را لغو کنید، دستور زیر را اجرا کنید:
timedatectl set-local-rtc 0 --adjust-system-clock

برای رفع خطاهای زمانی، ویندوز را وادار به استفاده از زمان UTC کنید
وادار کردن ویندوز به استفاده از زمان UTC مانند لینوکس، احتمالاً بهترین گزینه نیست. شما میتوانید رجیستری را ویرایش کنید تا ویندوز از زمان UTC استفاده کند، اما این کار به طور بالقوه میتواند مشکلات بیشتری نسبت به وادار کردن لینوکس به استفاده از زمان محلی ایجاد کند.
اگر میخواهید این کار را انجام دهید، ابتدا باید قابلیت بهروزرسانی زمان از طریق اینترنت را در ویندوز غیرفعال کنید. این کار تضمین میکند که ویندوز هنگام تلاش برای همگامسازی زمان فعلی از اینترنت، ساعت را به اشتباه تنظیم نکند. در ویندوز ۱۰، به Settings > Time & language بروید و “Set time automatically” را غیرفعال کنید.

اکنون باید مقدار مناسب را به رجیستری ویندوز اضافه کنید. هشدار استاندارد ما این است: ویرایشگر رجیستری ابزار قدرتمندی است و استفاده نادرست از آن میتواند سیستم شما را ناپایدار یا حتی غیرقابل استفاده کند. این یک هک بسیار ساده است و تا زمانی که دستورالعملها را دنبال کنید، نباید مشکلی داشته باشید. با این حال، اگر قبلاً با آن کار نکردهاید، قبل از شروع، مطالعه در مورد نحوه استفاده از ویرایشگر رجیستری را در نظر بگیرید و حتماً قبل از ایجاد تغییرات از رجیستری (و کامپیوتر خود!) نسخه پشتیبان تهیه کنید.
ابتدا، با کلیک بر روی Start، تایپ “regedit” و فشردن Enter، ویرایشگر رجیستری را باز کنید. با پیغام امنیتی که ظاهر میشود موافقت کنید.

در پنجره سمت چپ ویرایشگر رجیستری به کلید زیر بروید:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation
در ویندوز ۱۰ و ۱۱، میتوانید خط بالا را کپی کرده و در نوار آدرس جایگذاری کنید. با این حال، این ترفند روی نسخههای قدیمیتر ویندوز نیز کار میکند.

بر روی کلید “TimeZoneInformation” راست کلیک کرده و New > DWORD (32-bit) Value را انتخاب کنید.

نام مقدار جدید خود را RealTimeIsUniversal بگذارید.

بر روی مقدار RealTimeIsUniversal که به تازگی ایجاد کردهاید دوبار کلیک کنید، داده مقدار (value data) آن را به 1 تغییر دهید و روی “OK” کلیک کنید.

کار شما تمام شده است و میتوانید ویرایشگر رجیستری را ببندید. ویندوز زمان را درست مانند لینوکس به صورت UTC ذخیره خواهد کرد.
اگر زمانی خواستید این تغییر را لغو کنید، به همین مکان در رجیستری بازگردید، بر روی مقدار RealTimeIsUniversal که اضافه کردهاید راست کلیک کرده و آن را از رجیستری خود حذف کنید.
هک رجیستری یک-کلیکی ما برای تغییر به UTC را دانلود کنید

اگر نمیخواهید خودتان رجیستری را ویرایش کنید، میتوانید از هک رجیستری قابل دانلود ما استفاده کنید. ما یک هک ایجاد کردهایم که ویندوز را وادار به استفاده از زمان UTC میکند و یک هک دیگر که آن را به زمان محلی بازمیگرداند. هر دو در فایل ZIP زیر گنجانده شدهاند. فقط فایل را دانلود کنید، روی هکی که میخواهید استفاده کنید دوبار کلیک کنید و با افزودن اطلاعات به رجیستری خود موافقت نمایید.
هکهای بالا همان کاری را انجام میدهند که در بالا توضیح دادیم. هک “Make Windows Use UTC Time” ورودی “RealTimeIsUniversal” را با مقدار “1” ایجاد میکند، در حالی که هک “Make Windows Use Local Time” ورودی “RealTimeIsUniversal” را حذف میکند.
بوت دوگانه ویندوز روی مک چطور؟
اگرچه سیستمعامل macOS اپل مانند لینوکس از زمان UTC استفاده میکند، اما هنگام اجرای ویندوز در Boot Camp روی مک، نیازی به انجام کار خاصی ندارید. درایورهای Boot Camp اپل همه چیز را مدیریت میکنند. (البته داستان برای کاربران هکینتاش که بوت دوگانه دارند متفاوت است و باید ترفند رجیستری ویندوز را که در بالا ذکر شد امتحان کنند.)
چرا ویندوز به جای UTC از زمان محلی استفاده میکند؟
به طور خلاصه، این کار برای حفظ سازگاری با سیستمهای قدیمیتر مانند ویندوز ۳.۱ و برای جلوگیری از سردرگمی کاربران هنگام تنظیم زمان در بایوس (BIOS) کامپیوتر بود. البته، سازندگان کامپیوترهای شخصی زمان محلی را برای سازگاری با ویندوز انتخاب کردند و ویندوز نیز زمان محلی را برای سازگاری با تصمیمی که سازندگان کامپیوتر گرفته بودند انتخاب کرد، بنابراین این چرخه خود را تقویت کرد.
در حال حاضر هیچ استانداردی برای مشخص کردن اینکه آیا زمان به صورت UTC یا محلی در فریمور بایوس یا UEFI ذخیره شده است، وجود ندارد که احتمالاً منطقیترین راهحل بود. اما این کار نیازمند تلاش است و اکثر مردم هرگز متوجه نمیشوند که سیستمعاملهای مختلف از فرمتهای زمانی متفاوتی استفاده میکنند – مگر در پیکربندیهای بوت دوگانه.

