PDA

Просмотр полной версии : [Function] TimeConvert



KakbeYura
09.06.2014, 16:47
Для чего нужно:
Конвертирование разницы реального Unix-времени, или указаного, и заданого в строку.
Примеры:

TypeConvert(0); >> 44 года (прошло 44 года с 1970)
TypeConvert(60, 0); >> 1 минута (разница 60 секунд)
TypeConvert(10, 0); >> меньше 1 минуты (разница 10 секунд)
TypeConvert(7200, 0); >> 2 часа (разница 7200 секунд)
TypeConvert(10, 0); >> меньше 1 минуты (разница 10 секунд)
TypeConvert(345600, 172800); >> 2 дня (разница 172800 секунд)

Автор: KakbeYura
Сам код:

TimeConvert(timestamp, compare = -1)
{
if(compare == -1) compare = gettime();
new n, Float:d = (timestamp > compare) ? timestamp - compare : compare - timestamp, str[32];
if (d < 60)
{
format(str, sizeof(str), "меньше 1 минуты");
return str;
}
new l;
if (d < 3600)
{
n = floatround(floatdiv(d, 60.0), floatround_floor);
format(str, sizeof(str), "минут");
l = (n % 10);
if(!(10 < (n % 100) < 20))
{
switch(l)
{
case 1: strcat(str,"а");
case 2..4: strcat(str,"ы");
}
}
}
else if (d < 86400)
{
n = floatround(floatdiv(d, 3600.0), floatround_floor);
format(str, sizeof(str), "час");
l = (n % 10);
if(10 < (n % 100) < 20) strcat(str,"ов");
else
{
switch(l)
{
case 2..4: strcat(str,"а");
case 5..9: strcat(str,"ов");
}
}
}
else if (d < 2592000)
{
n = floatround(floatdiv(d, 86400.0), floatround_floor);
l = (n % 10);
if(10 < (n % 100) < 20) format(str, sizeof(str), "дней");
else
{
switch(l)
{
case 1: format(str, sizeof(str), "день");
case 2..4: format(str, sizeof(str), "дня");
default: format(str, sizeof(str), "дней");
}
}
}
else if (d < 31536000)
{
n = floatround(floatdiv(d, 2592000.0), floatround_floor);
l = (n % 10);
if(10 < (n % 100) < 20) format(str, sizeof(str), "месяцев");
else
{
format(str, sizeof(str), "месяц");
switch(l)
{
case 2..4: strcat(str, "а");
case 5..9: strcat(str, "ев");
}
}
}
else
{
n = floatround(floatdiv(d, 31536000.0), floatround_floor);
l = (n % 10);
if(10 < (n % 100) < 20) format(str, sizeof(str), "лет");
else
{
switch(l)
{
case 1: format(str, sizeof(str), "год");
case 2..4: format(str, sizeof(str), "года");
case 5..9: format(str, sizeof(str), "лет");
}
}
}
format(str,sizeof(str), "%d %s", n, str);
return str;
}