dosperados
19-10-2017, 12:49
Задача вывести правильное окончание к числу дней/дня
Пример:
99 дней
101 день
100 дней
102 дня
Как написанный ниже код сделать красивей и компактней.
Подскажите ГУРУ)
$start = (Get-Date).AddDays(-99)
$end = (Get-Date)
[int]$days = ($end - $start).Days
if ($days -ge "100") {$days = $days.ToString().substring(($days.ToString().Length)-2)} else {}
if ($days -le "19") {
if ($days -eq "1") {$ruday = 'день'}
elseif (($days -le "4") -and ($days -gt "1")) {$ruday = 'дня'}
else {$ruday = 'дней'}
}
else {
$cutdays = $days.ToString()[-1]
if ($cutdays -eq "1") {$ruday = 'день'}
elseif (($cutdays -le "4") -and ($cutdays -gt "1")) {$ruday = 'дня'}
else {$ruday = 'дней'}
}
[int]$days = ($end - $start).Days
Write-Output "$days $ruday"
Пример:
99 дней
101 день
100 дней
102 дня
Как написанный ниже код сделать красивей и компактней.
Подскажите ГУРУ)
$start = (Get-Date).AddDays(-99)
$end = (Get-Date)
[int]$days = ($end - $start).Days
if ($days -ge "100") {$days = $days.ToString().substring(($days.ToString().Length)-2)} else {}
if ($days -le "19") {
if ($days -eq "1") {$ruday = 'день'}
elseif (($days -le "4") -and ($days -gt "1")) {$ruday = 'дня'}
else {$ruday = 'дней'}
}
else {
$cutdays = $days.ToString()[-1]
if ($cutdays -eq "1") {$ruday = 'день'}
elseif (($cutdays -le "4") -and ($cutdays -gt "1")) {$ruday = 'дня'}
else {$ruday = 'дней'}
}
[int]$days = ($end - $start).Days
Write-Output "$days $ruday"