我很难过。 :)
我的电脑安装了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中使用的与日期时兼容的字符串时,我偶然发现了它。
答案 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