LINUX.ORG.RU

Как получить название месяца с правильным окончанием?


0

1

Сейчас у меня FreeBSD и там это работает следующим образом:

strftime %B возвращает «мая» в расчёте на то что оно будет использовано с числом, если нужно «май» — добавляется стандартный флаг %O (alternative format)

$ perl -e 'use POSIX (strftime); print strftime("%B%n", 0, 0, 0, 1, 4, 0);'
мая
$ perl -e 'use POSIX (strftime); print strftime("%OB%n", 0, 0, 0, 1, 4, 0);'
май
В Linux glibc %OB не работает, а стандартный %B возвращает «май»
$ perl -e 'use POSIX (strftime); print strftime("%OB%n", 0, 0, 0, 1, 4, 0);'
%OB
$ perl -e 'use POSIX (strftime); print strftime("%B%n", 0, 0, 0, 1, 4, 0);'
Май
Интересно, нет ли какого более менее переносимого способа получить название месяца с правильным окончанием? Интересует FreeBSD, GNU/Linux.

ps: можно написать массив из 12 строк, но это не спортивно.

ps: можно написать массив из 12 строк, но это не спортивно.

а вы думаете в другом месте это сделано через астрал?

anonymous2 ★★★★★
()

> можно написать массив из 12 строк, но это не спортивно.

$month =~ s/[ьй]$/я/ or $month .= 'а';
arsi ★★★★★
()
Ответ на: комментарий от arsi

Спасибо, я боюсь что может потребоваться ещё украинский и возможно греческий, поэтому хотелось бы системными функциями воспользоваться

Eshkin_kot ★★
() автор топика
Ответ на: комментарий от Eshkin_kot

Как ни странно именительный получается так

perl -MDate::Language -E 'say Date::Language->new("Russian_koi8r")->time2str("%B", time)' | iconv -f koi8-r
Май

Olegymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.