为什么Powershell写输出日期格式不是系统设置?

时间:2016-10-20 09:46:52

标签: date powershell

我们有一台Windows服务器,其区域设置的短日期设置为dd.MM.yyyy。但是,powershell会将日期输出为MM/dd/yyyy

$d = (Get-Item .\somefile.txt).CreationTime
Write-Output "$d" # => 09/26/2016 15:35:35

此外,toString()函数返回不同的(正确的)格式

Write-Output "$($d.toString())" # => 26.09.2016 15:35:35

问题:

  1. 为什么powershell使用MM / dd / yyyy?
  2. 为什么上述2种格式不同?
  3. 我知道我们可以在我们的powershell配置文件中设置格式,但是没有“系统”设置可以确定它吗?

1 个答案:

答案 0 :(得分:1)

脚本通常用于自动化,很少用于与用户交互或创建UI。将变量放入字符串中时自动转换为字符串,例如"$d"将始终使用不变文化,而不是用户的偏好。例如,数字也是如此。这正是为了避免在字符串包含不同用户或不同机器的不同格式时出现的问题。

如果您需要控制格式,请显式转换为字符串,而不是隐式转换。

顺便说一句,解析也是如此。您可以将字符串转换为日期时间或数字,但这需要某种格式才能生效。如果您想使用用户的偏好,请改用[DateTime]::Parse