Как установить системное время в UTC
Так что мне нужно сценарий установки системной даты и времени из командной строки (CMD.exe, BATCH возможно), но я сталкиваюсь с трудностями с часовыми поясами против UTC и тому подобное.
Мой источник даты и времени - UTC, который является самым переносимым и поэтому имеет смысл.
Первоначально этот код был реализован с использованием (и эквивалент для части даты)
cmd.exe /C time HH:mm
который, кажется, работает, устанавливая время и дату, но ожидает местное время, поэтому в отношении настроенного часового пояса. Поскольку вводится UTC, результат в большинстве случаев неправильный и только иногда правильный, в зависимости от комбинации часовых поясов.
Поскольку доступ к системным свойствам через WMIC популярен для получения времени (формат времени объясняется, например, здесь и здесь), я с радостью посмотрел на глагол set
вместо широко используемого get
и попробовал (из cmd.exe, запущенного от имени администратора):
C:\>wmic os get localdatetime
LocalDateTime
20180119112409.189000+060
C:\>wmic os set localdatetime=20180119122400.000000+060
Updating property(s) of '\\HOST\ROOT\CIMV2:Win32_OperatingSystem=@'
Property(s) update successful.
C:\>wmic os get localdatetime
LocalDateTime
20180119112438.447000+060
set
сообщает, что это было успешно, но значение не обновлено. Возникает вопрос: можно ли +000
сигнализировать, что время UTC или если это будет установлено localtimezone
также.
Я видел другое свойство в отношении времени, поэтому я попытался
C:\>wmic path win32_utctime set Hour=11
Updating property(s) of '\\HOST\root\cimv2:Win32_UTCTime=@'
ERROR:
Description = Provider is not capable of the attempted operation
То, о чем я могу думать, это получить смещение UTC в пакетном скрипте через
C:\>wmic os get currenttimezone
проанализируйте абсолютное значение, примените его к дате и времени UTC, которое я имею в качестве входных данных. Затем разделить и использовать time
а также date
еще раз, но это кажется слишком утомительным для такой простой задачи.
У меня нет доступа к Powershell, решение должно быть максимально переносимым (оно также должно работать на WindowsPE с включенной полной поддержкой wmic).