Используйте UFormat для получения времени Unix - PullRequest
10 голосов
/ 07 декабря 2009

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

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

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

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

Ответы [ 6 ]

14 голосов
/ 07 декабря 2009

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

6 голосов
/ 02 июня 2017
[int](Get-Date -UFormat %s -Millisecond 0)
6 голосов
/ 30 января 2016

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

$DateTime = (Get-Date).ToUniversalTime()
$UnixTimeStamp = [System.Math]::Truncate((Get-Date -Date $DateTime -UFormat %s))
5 голосов
/ 25 ноября 2014

Я сделал это, округлил

[System.Math]::Round((date -UFormat %s),0)
3 голосов
/ 08 декабря 2009

Мое решение:

(Get-Date -UFormat %s) -Replace("[,\.]\d*", "")
0 голосов
/ 29 апреля 2019

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

(date -UFormat %s).split('.')[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...