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