dosperados |
19-10-2017 12:49 2771776 |
Вывод правильного окончания слова дня/дней
Задача вывести правильное окончание к числу дней/дня
Пример:
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"
|
Код:
if($d -ge 0)
{
$y = $d % 10
if ($d -ge 10 -and [int]($d / 10 % 10) -eq 1) {"$d дней"}
elseif ($y -eq 1) {"$d день"}
elseif ((2,3,4) -eq $y) {"$d дня"}
else {"$d дней"}
}
|
dosperados |
20-10-2017 05:45 2771910 |
Вот еще одна логика, может кому пригодится
Конечно думаю что Вы Kazun, сможете и ее улучшить, упростить.
Код:
if ($days.ToString()[-2] -eq "1") {
$ruday = "дней"
}
else {
[char]$digit = $days.ToString()[-1]
if ($digit -eq "1") {$ruday = "день"}
elseif (($digit -le "4") -and ($digit -gt "1")) {$ruday = "дня"}
else {$ruday = "дней"}
}
|
Время: 04:32.
© OSzone.net 2001-