Использовать UFormat для получения времени unix

Я могу использовать следующее, чтобы добавить дату к тексту:

"Foo {0:G} Foo" -f (date)     #returns "Foo 2009-12-07 15:34:16 Foo"

Но я хочу время в формате Unix. Я могу получить его date -UFormat %s, но могу ли я использовать тот же синтаксис?

Когда я использую -UFormat %s, я получаю 1260199855,65625, как я могу удалить десятичный символ?

Ответ 1

Просто введите результат в int так:

PS> [int][double]::Parse((Get-Date -UFormat %s))
1260172909

PS> "Foo {0:G} Foo" -f [int][double]::Parse((Get-Date -UFormat %s))
Foo 1260172997 Foo

Использование метода Parse означает, что строка анализируется как "осведомленная культура", так что соответствующий признак десятичного разделителя распознается для текущей культуры. Если вы просто используете напрямую, PowerShell использует инвариантную культуру, которая вызывает проблемы для любой культуры, где decimal sep char не является периодом.

Ответ 2

Вот как я это делаю:

$DateTime = (Get-Date).ToUniversalTime()
$UnixTimeStamp = [System.Math]::Truncate((Get-Date -Date $DateTime -UFormat %s))

Ответ 3

[int](Get-Date -UFormat %s -Millisecond 0)

Ответ 4

Я сделал это, закругленный

[System.Math]::Round((date -UFormat %s),0)

Ответ 5

Мое решение:

(Get-Date -UFormat %s) -Replace("[,\.]\d*", "")

Ответ 6

Я бы просто усек десятичное число:

(date -UFormat %s).split('.')[0]