Помимо Ивана Мирчева полезный ответ. вы можете конвертировать метку времени WMI следующим образом:
$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local')
Если вам нужна дата в формате UTC, выполните
$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local').ToUniversalTime()
Последняя выдаст
08-окт-2019 00: 01: 58
Объяснение:
Несмотря на то, что меткой времени WMI является время UTC, функция ConvertToDateTime()
возвращает датув по местному времени , но, к сожалению, для свойства Kind
установлено значение «Не указано».
Когда вы выполняете ToLocalTime()
для этого метода, тогда предполагает, что это UTC и снова добавляет смещение часового пояса, что приводит к неправильному времени.
Поскольку.Kind
свойство доступно только для чтения для объекта DateTime, вам нужно создать новый DateTime, используя преобразованное время WMI, чтобы установить для его свойства Kind значение «Local».