PowerShell 技能连载 - 格式化 DateTime

当您拥有一个真正的 DateTime 对象(比如不是字符串)时,您就拥有了许多强大的格式化功能。您可以直接获取一个 DateTime 对象:

1
2
3
4
PS> $installDate = (Get-CimInstance -Class Win32_OperatingSystem).InstallDate

PS> $installDate.GetType().FullName
System.DateTime

或者您可以将一个字符串转换为一个 DateTime 对象:

1
2
3
4
PS> $psconf = Get-Date -Date '2019-06-04 09:00'

PS> $psconf.GetType().FullName
System.DateTime

当您拥有一个 DateTime 对象时,请使用 ToString() 方法并提供一个或两个参数。

第一个参数决定您希望使用日期的哪些部分,并使用这些占位符(大小写敏感!):

y       Year
M       Month
d       Day
H       Hour
m       Minute
s       Second
f       Millisecond

指定了越多占位符,就可以得到越多的细节:

1
2
3
4
5
6
7
8
9
10
PS> (Get-Date).ToString('dd')
30

PS> (Get-Date).ToString('ddd')
So

PS> (Get-Date).ToString('dddd')
Sonntag

PS>

(如您所见,PowerShell 使用的是缺省的语言,这个例子中使用的是德语)

要以 ISO 格式输出一个 DateTime,请使用这段代码:

1
2
3
4
5
6
PS> $installDate = (Get-CimInstance -Class Win32_OperatingSystem).InstallDate

PS> $installDate.ToString('yyyy-MM-dd HH:mm:ss')
2018-06-08 18:24:46

PS>

如果您也希望指定区域设置(语言),请在第二个参数指定 CultureInfo

1
2
3
4
5
6
7
8
9
10
11
12
13
PS> (Get-Date).ToString('dddd', [System.Globalization.CultureInfo]'en-us')
Sunday

PS> (Get-Date).ToString('dddd', [System.Globalization.CultureInfo]'zh')
星期日

PS> (Get-Date).ToString('dddd', [System.Globalization.CultureInfo]'es')
domingo

PS> (Get-Date).ToString('dddd', [System.Globalization.CultureInfo]'fr')
dimanche

PS>

如果您想了解某个区域设置的区域代码,请试试这段代码:

1
PS> [System.Globalization.CultureInfo]::GetCultures('Installed') | Out-GridView -PassThru
评论