Изменить: После нескольких дней использования метода, который я первоначально опубликовал, я обнаружил, что флаг RealTimeIsUniversal
, как не поддерживаемый остаток от Windows NT, на самом деле довольно ненадежен и непрактичен в целом. Время от времени, с кажущимися случайными интервалами, часы Windows возвращались из UTC в местное время, что было крайне раздражающим (и приводило к нескольким коммитам git, которые выглядят так, будто они из будущего в журнале коммитов). Это привело меня к поиску другого решения ...
В общем, проблема в том, что, как упоминал Джон Фухи в комментарии, Windows сохраняет часы по местному времени, в то время как OS X сохраняет часы по UTC (используя указанный часовой пояс в качестве модификатора, чтобы указать правильное время). Чтобы это исправить, одна из операционных систем должна будет наклониться назад и отслеживать время, используя метод другой системы.
Теперь, самый надежный метод, который я нашел, чтобы решить эту проблему до сих пор, состоит в том, чтобы заставить OS X переключать свои часы на местное время с UTC всякий раз, когда он выключается, а затем переключать его обратно при каждом запуске. Точный способ сделать это можно найти в вики проекта OSx86, что довольно интересно. (Небольшое примечание: есть кое-что, что, похоже, зависит от OSx86, а именно, LaunchDaemon plist для инструкций Leopard. Тем не менее, я опробовал метод Leopard дословно на моем MacBook Pro, и он работает просто отлично. Другими словами, просто следуйте инструкциям в точности так, как написано, и не обращайте внимания на любые ссылки на OSx86 в файлах - они не имеют значения.)
Вот старое решение, если вы хотите попробовать его. Будьте осторожны: это никогда не обновлялось для правильной работы с более новыми версиями Windows, так что это очень ненадежно, как я выяснил трудным путем ...
Другой способ синхронизации часов - заставить Windows использовать UTC через взлом реестра (трюк, который я нашел из подсказок Mac OS X):
- Запустите RegEdit (Пуск -> Выполнить ..., введите
regedit
)
- Перейдите к «
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
».
- В меню « Правка» выберите « Создать» -> «Значение DWORD».
- Назовите это значение "
RealTimeIsUniversal
".
- Дважды щелкните
RealTimeIsUniversal
и введите 1
для значений данных.
В следующий раз, когда вы загрузитесь в Windows, часы должны соответствовать часам Mac OS X, и вы все равно можете иметь часовой пояс Windows, совпадающий с часовым поясом, установленным в Mac OS X.