Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вывод правильного окончания слова дня/дней

Ответить
Настройки темы
PowerShell - [решено] Вывод правильного окончания слова дня/дней

Аватара для dosperados

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задача вывести правильное окончание к числу дней/дня
Пример:
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"

Отправлено: 12:49, 19-10-2017

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
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 дней"}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:23, 19-10-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для dosperados

Пользователь


Сообщения: 77
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот еще одна логика, может кому пригодится
Конечно думаю что Вы 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 = "дней"}
}

Отправлено: 05:45, 20-10-2017 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вывод правильного окончания слова дня/дней

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Вывод имен файлов за последние N дней Elven Скриптовые языки администрирования Windows 15 08-05-2020 08:44
VBS/WSH/JS - поиск слова в тексте и вывод части текста после искомого слова sergey23031978 Скриптовые языки администрирования Windows 9 18-02-2015 16:54
2010 - Хочу все знать о WORD 2010 часть 6: выделение слова без пробела после слова test2235 Microsoft Office (Word, Excel, Outlook и т.д.) 2 02-11-2013 22:20
7 / 2008 R2 - Вывод окна выбора языка после окончания инсталляции gnommak Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 03-08-2013 22:13
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы rustoss AutoIt 10 29-09-2011 15:27




 
Переход