PowerShell日期格式不符合规定

时间:2017-05-23 11:22:49

标签: string powershell datetime

我很难过。 :)

我的电脑安装了PowerShell 5.1。在另一台计算机(同一语言)5.0上它按预期工作。 (使用Get-Culture检查;我的语言环境是nb-NO(挪威语))

考虑一下:

# first condition
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{QUERY_STRING} ^product=([^&\s]+)&retailer=([^&\s]+)&site=test$ [NC]
RewriteRule ^$ /?product=%1&retailer=%2 [R=301,L]

# second condition
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{QUERY_STRING} ^retailer=([^&\s]+)&site=test$ [NC]
RewriteRule ^$ /retailer/%1? [R=301,L]

RewriteRule ^retailer/(.*)\+(.*)$ /retailer/$1-$2 [R=301,L]

返回

Get-Date

所以我这样做

tirsdag 23. mai 2017 13.13.18

按预期返回

Get-Date -Format "H-m-s"

然后我这样做

13-13-18

您认为它会返回

Get-Date -Format "H:m:s"

正确? (它在PS5.0上做!)不!我明白了:

13:13:18

只有我这样做,输出才是我想要的:

13.13.18

有人可以解释一下这是为什么吗?当我想格式化在SQL Server中使用的与日期时兼容的字符串时,我偶然发现了它。

1 个答案:

答案 0 :(得分:1)

这是因为基础DateTime格式化功能会查看:并将其视为culture-dependent "time separator"

在挪威语(no-NO)中,默认时间分隔符为.。您可以使用(假设no-NO是当前文化)来检查它:

PS C:\> [CultureInfo]::CurrentCulture.DateTimeFormat.TimeSeparator
.

您也可以通过插入文字:来覆盖此字段,并使用您已经找到的转义序列\:,或者您可以全局覆盖它(在生命周期中)当前进程/ appdomain):

PS C:\> [CultureInfo]::CurrentCulture.DateTimeFormat.TimeSeparator = ":"
PS C:\> Get-Date -Format "H:m:s"
13:13:18