Описание:
Выводит сколько времени прошло или осталось до переданного UNIX времени. Конвертирует, если меньше года, то выводит в месяцах, или если меньше месяца, то в днях и так далее до секунды
Функция:
Открыть/закрыть
PHP код:
#if !defined UNIX_MINUTE
const UNIX_MINUTE = 60;
#endif
#if !defined UNIX_HOUR
const UNIX_HOUR = UNIX_MINUTE*60;
#endif
#if !defined UNIX_DAY
const UNIX_DAY = UNIX_HOUR*24;
#endif
#if !defined UNIX_MONTH
const UNIX_MONTH = UNIX_DAY*30;
#endif
#if !defined UNIX_YEAR
const UNIX_YEAR = UNIX_MONTH*12;
#endif
stock UnixTimeConvert(array[], timestamp, array_size = sizeof(array))
{
if(array_size < 14)
return 0;
array[0] = EOS;
new
compare = gettime(),
time = (timestamp > compare) ?
(timestamp - compare) : (compare - timestamp), remainder;
if(time < UNIX_MINUTE)
{
remainder = time;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "секунда", array_size);
case 2, 3, 4:
strcat(array, "секунды", array_size);
default:
strcat(array, "секунд", array_size);
}
}
else if(time < UNIX_HOUR)
{
remainder = time = time / UNIX_MINUTE;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "минута", array_size);
case 2, 3, 4:
strcat(array, "минуты", array_size);
default:
strcat(array, "минут", array_size);
}
}
else if(time < UNIX_DAY)
{
remainder = time = time / UNIX_HOUR;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "час", array_size);
case 2, 3, 4:
strcat(array, "часа", array_size);
default:
strcat(array, "часов", array_size);
}
}
else if(time < UNIX_MONTH)
{
remainder = time = time / UNIX_DAY;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "день", array_size);
case 2, 3, 4:
strcat(array, "дня", array_size);
default:
strcat(array, "дней", array_size);
}
}
else if(time < UNIX_YEAR)
{
remainder = time = time / UNIX_MONTH;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "месяц", array_size);
case 2, 3, 4:
strcat(array, "месяца", array_size);
default:
strcat(array, "месяцев", array_size);
}
}
else
{
remainder = time = time / UNIX_YEAR;
if((remainder %= 100) > 19)
remainder %= 10;
switch(remainder)
{
case 1:
strcat(array, "год", array_size);
case 2, 3, 4:
strcat(array, "года", array_size);
default:
strcat(array, "лет", array_size);
}
}
format(array, array_size, "%d %s", time, array);
return 1;
}
Параметры:
- array[] - массив в который будет записан результат.
- timestamp - UNIX время для вычисление.
- array_size - не обязательный параметр, настроен по умолчанию.
Возвращаемые значения:
- 1 - функция успешно выполнена.
- 0 - функции не удалось выполниться. Размер массива для записи слишком маленький.
Пример использования:
PHP код:
public OnGameModeInit()
{
new time_left[14];
UnixTimeConvert(time_left, gettime()+UNIX_DAY);
printf("Внимание! До завтра остался %s", time_left);
return 1;
}
Автор: Я
UPD: