代码之家  ›  专栏  ›  技术社区  ›  magol Nathaniel Roark

使用uformat获取Unix时间

  •  10
  • magol Nathaniel Roark  · 技术社区  · 15 年前

    我可以使用以下方法在文本中附加日期:

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

    但是我想要Unix格式的时间。 我可以得到它 date -UFormat %s ,但是我可以使用相同的语法吗?

    当我使用 -UFormat %s 我得到 126019985565625 ,如何删除小数?

    5 回复  |  直到 7 年前
        1
  •  13
  •   Keith Hill    15 年前

    只需将结果强制转换为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 char不是句点的任何区域性出现问题。

        2
  •  5
  •   Jon Bonner    8 年前

    我是这样做的:

    $DateTime = (Get-Date).ToUniversalTime()
    $UnixTimeStamp = [System.Math]::Truncate((Get-Date -Date $DateTime -UFormat %s))
    
        3
  •  5
  •   Anton    7 年前
    [int](Get-Date -UFormat %s -Millisecond 0)
    
        4
  •  4
  •   JoeRod    10 年前

    我做了这个,四舍五入

    [System.Math]::Round((date -UFormat %s),0)
    
        5
  •  3
  •   magol Nathaniel Roark    15 年前

    我的解决方案:

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