powershell 使用UFormat获取unix时间

tvz2xvvm  于 2023-01-20  发布在  Shell
关注(0)|答案(7)|浏览(138)

我可以使用下面的附加一个日期到文本:

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

但是我想要Unix的时间,我可以通过date -UFormat %s得到它,但是我可以使用相同的语法吗?
当我使用-UFormat %s时,我得到 * 1260199855,65625 *,如何删除小数点?

ifmq2ha2

ifmq2ha21#

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

zz2j4svz2#

我是这么做的:

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

vxbzzdmp3#

只需将结果转换为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将使用固定区域性,这会导致小数点分隔符不是句点的任何区域性出现问题。

rdlzhqv9

rdlzhqv94#

我做了这个,围捕

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

olmpazwi5#

我的解决方案:

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

vshtjzan6#

我只需要把小数点截短:

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

eagi6jfj7#

答案应该是UTC。这应该有利于嵌入Discord。请参阅https://www.unixtimestamp.com“-uformat %s”在powershell 5.1中不转换为UTC(但powershell 7可以)。只有一个其他答案考虑了这一点,而不是可接受的答案。

$unixtime = get-date '12/28/22 10pm' | % ToUniversalTime | get-date -uformat %s
"<t:$unixtime>"

<t:1672282800>

UTC unix时间的替代时间:

[datetimeoffset]'12/28/22 10pm' | % ToUnixTimeSeconds

1672282800

相关问题