我的机器的语言环境是UK(en-gb)。当我执行以下操作(检查SSL证书的到期日期)时,DateTime对象以UK格式存储值
$expiration = Get-Date $req.ServicePoint.Certificate.GetExpirationDateString()
请参见此处,首先,如果只是将值打印到命令提示符,将会发生什么;其次,如果您尝试将DateTime对象的值嵌入到字符串中,将会发生什么。
PS>$expiration
19 December 2016 23:59:59
PS>write-host "this is the expiration: $expiration"
this is the expiration: 12/19/2016 23:59:59
因此,我们看到它已切换为非英国格式(应为2016年12月19日)。为什么会这样,并且有一个简单的解决方法吗?
这是一个字符串扩展问题,我担心会有些痛苦。您知道此显示不正确:
"$(Get-Date 01/02/2016)"
但是,这些显示如您期望的那样:
(Get-Date 01/02/2016).ToString()
"$((Get-Date 01/02/2016).ToString())"
这两种方法都可以解决此问题:
$expiration = Get-Date 01/02/2016
write-host "this is the expiration: $($expiration.ToString())"
write-host ("this is the expiration: {0}" -f $expiration)
强制转换为DateTime时,您会看到类似的时区无知:
[DateTime]$var = "01/02/2016"
$var
克里斯
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句