我正在尝试将PowerShell中的date
格式化为DayOfWeek Month Day(st|nd|rd|th) year
格式。
(Get-Date).AddDays(+1).ToString('D')
输出为“2016年7月5日星期二” 但需要采用以下格式: 2016年7月5日星期二
if date(Get-Date) % 100 IN (11, 12, 13) THEN 'th'
if (Get-Date) % 10 = 1 THEN 'st'
if (Get-Date) % 10 = 2 THEN 'nd'
if (Get-Date) % 10 = 3 THEN 'rd'
答案 0 :(得分:4)
一种可能的解决方案可能如下所示
function Get-DateOrdinalSuffix([datetime]$Date) {
switch -regex ($Date.Day.ToString()) {
'1(1|2|3)$' { 'th'; break }
'.?1$' { 'st'; break }
'.?2$' { 'nd'; break }
'.?3$' { 'rd'; break }
default { 'th'; break }
}
}
$d = (Get-Date).AddDays(1)
$suffix = Get-DateOrdinalSuffix $d
$dateFormatted = "{0} {1:MMMM} {2}{3} {4}" -f $d.DayOfWeek, $d, $d.Day, $suffix, $d.Year
答案 1 :(得分:1)
另一种不使用regex
来获取日后缀的解决方案:
function Get-DaySuffix
{
Param(
[System.DateTime]$date
)
switch ($date.Day)
{
{$_ -in 1,21,31} { 'st'}
{$_ -in 2,22} { 'nd'}
{$_ -in 3,23} { 'rd'}
Default {'th'}
}
}
$date = (Get-Date).AddDays(1)
$output = $date.ToString('dddd MMMM d yyyy', [CultureInfo]::CreateSpecificCulture('en-US'))
$output -replace '( \d{4})$', ('{0}$1'-f (Get-DaySuffix $date))
<强>输出:强>
Tuesday July 5th 2016