Windows ISO 8601时间戳

M.S*_*.S. 11 windows powershell timestamp iso8601

我需要将Windows PowerShell中的日期转换为ISO 8601格式.

在Linux/Unix中没问题

TZ=0 date -d "<random-format>" +%Y-%m-%dT%H:%M:%S.000Z
Run Code Online (Sandbox Code Playgroud)

现在我需要在Windows PowerShell中执行相同的操作.Windows上的输出格式是

Wednesday, 19. July 2017 01:06:13
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

von*_*ryz 15

PowerShell Get-Date支持标准的.NET时间格式.在o往返格式与ISO 8601的规定,像这样,

Get-Date -Format "o"

2017-08-15T12:10:34.4443084+03:00
Run Code Online (Sandbox Code Playgroud)


rom*_*m99 12

老问题,但由于其他答案都没有它,如果您正在寻找 UTC,这似乎可以做到这一点:

(Get-Date).ToUniversalTime().ToString("o")
Run Code Online (Sandbox Code Playgroud)


Mat*_*sen 9

Get-Date支持Unix格式化字符串与-UFormat参数.你可以重复使用它:

Get-Date -UFormat '+%Y-%m-%dT%H:%M:%S.000Z'
Run Code Online (Sandbox Code Playgroud)

  • 这将为您提供本地时区的时间戳!“Z”后缀可能不正确。 (2认同)

sok*_*aty 7

以下内容适用于 Windows/OS X 上的 Windows PowerShell 5.1 和 PowerShell 7.0:

 (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffK")
 
 2020-12-01T22:31:41.402Z
Run Code Online (Sandbox Code Playgroud)

如果你不想要你的毫秒,那么格式字符串将是 "yyyy-MM-ddTHH:mm:ss.000K"