Изменить: после нескольких дней использования метода, который я первоначально опубликовал, я обнаружил, что 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.