Класс, упрощающий подбор окончания.
Можно использовать не только для даты, но для других слов описывая массив вне класса по принципу ARRAY_NAME и используя метод getNameIndex

Код:
class ru.inils.date.DateName {
private static var __versionClass:String = "1.0";
private static var ARRAY_NAME:Array = new Array (
["миллисекунд", "миллисекунда", "миллисекунды"],
["секунд", "секунда", "секунды"],
["минут", "минута", "минута"],
["часов", "час", "часа"],
["дней", "день", "дня"],
["месяцев", "месяц", "месяца"],
["лет", "год", "года"]
);
/**
* Метод, помогает определить какой вид надо использовать для описания числа в зависимости от его значения. Возможно три вида. Например: 1 день/корова/год, 2 дня/коровы/год, 5 дней/коровы/лет. Если число или последние две цифры числа находят в диапазоне 11…19 (высший приоритет проверки), то вид равен 0. Далее вид определяется только по последней цифре числа. Если она равна 1, то вид равен 1. Если 2, 3 или 4, то вид равен 2. Во всех остальных случаях, вид равен 0.
* @param val - Число.
* @return Вид окончания.
*/
public static function getNameIndex (val:Number):Number {
var len:Number = Number (String (val).substr (-2, 2));
if (len > 9 && len < 20) {
return 0;
} else {
len = Number (String (val).substr (-1, 1));
if (len == 1) {
return 1;
} else if (len > 1 && len <5) {
return 2;
}
}
return 0;
}
/**
* Метод, возвращает описание числа в зависимости от его значения и типа.
* @param val - Число требующие описание.
* @param nameID - Тип числа: миллисекунда, секунда, минута, час, день, месяй или год.
* @return Описание числа.
*/
public static function getName (val:Number, nameID:Number):String {
var index:Number = getNameIndex (val);
return ARRAY_NAME[nameID][index];
}
public static function get NAME_MILLISECONDS ():Number {
return 0;
}
public static function get NAME_SECONDS ():Number {
return 1;
}
public static function get NAME_MINUTES ():Number {
return 2;
}
public static function get NAME_HOURS ():Number {
return 3;
}
public static function get NAME_DAYS ():Number {
return 4;
}
public static function get NAME_MONTHS ():Number {
return 5;
}
public static function get NAME_YEARS ():Number {
return 6;
}
}
Пример

Код:
import ru.inils.date.DateName;
var array:Array = ["коров", "корова", "коровы"]
function test (i:Number):Void {
//// собственное определение
trace (i + " " + array[DateName.getNameIndex (i)]);
//// встроенные опрделения
trace (i + " " + DateName.getName (i, DateName.NAME_MILLISECONDS));
trace (i + " " + DateName.getName (i, DateName.NAME_SECONDS));
trace (i + " " + DateName.getName (i, DateName.NAME_MINUTES));
trace (i + " " + DateName.getName (i, DateName.NAME_HOURS));
trace (i + " " + DateName.getName (i, DateName.NAME_DAYS));
trace (i + " " + DateName.getName (i, DateName.NAME_MONTHS));
trace (i + " " + DateName.getName (i, DateName.NAME_YEARS));
trace ("")
}
test(1)
test(2)
test(5)
test(12)
test(16)
test(101)