Я просто хотел представить еще один, и, надеюсь, более простой способ решения этой проблемы.Вот один вкладыш, который я использовал для получения текущего времени Unix (эпохи) в UTC:
$unixTime = [long] (Get-Date -Date ((Get-Date).ToUniversalTime()) -UFormat %s)
Разбивая это изнутри:
(Get-Date) .ToUniversalTime ()
Возвращает текущую дату / время в часовом поясе UTC.Если вы хотите узнать местное время, просто позвоните по номеру Get-Date .Затем он используется в качестве входных данных для ...
[long] (Get-Date -Date (дата / время UTC сверху) -UFormat% s)
Преобразование даты / времени UTC(с первого шага) в формат Unix. -UFormat% s указывает Get-Date вернуть результат как время эпохи Unix (секунды, прошедшие с 01 января 1970 г. 00:00:00).Обратите внимание, что это возвращает тип данных double (в основном десятичный).Приведя его к типу данных long , он автоматически преобразуется (округляется) в 64-разрядное целое число (без десятичной дроби).Если вам нужна дополнительная точность десятичного числа, не приводите его к типу long .
Extra credit
Другой способ преобразовать / округлить десятичное число доцелое число должно использовать System.Math :
[System.Math]::Round(1485447337.45246)