Как в pawn можно узнать день недели (или его порядковый номер)?
Как в pawn можно узнать день недели (или его порядковый номер)?
Salvacore (27.01.2016)
Стоит сначала немного погуглить ...
Вариант великого короля Pawno скриптинга всея легенда рашн комьюнити
Вариант OFFREALPHP код:
stock getDay()
{
new g_Date[3], g_Week[10], g_Result;
getdate(g_Date[0], g_Date[1], g_Date[2]);
g_Result = g_Date[2] + (g_Date[1] * 2) + ((3 * g_Date[1] * 1) / 5) + g_Date[0] + (g_Date[0] / 4) - (g_Date[0] / 100) + (g_Date[0] / 400) + 2;
switch(g_Result / 7)
{
case 0:
{
g_Week = "Saturday";
}
case 1:
{
g_Week = "Sunday";
}
case 2:
{
g_Week = "Monday";
}
case 3:
{
g_Week = "Tuesday";
}
case 4:
{
g_Week = "Wednesday";
}
case 5:
{
g_Week = "Thursday";
}
case 6:
{
g_Week = "Friday";
}
}
return g_Week;
}
На основе последнего варианта я сделал свойPHP код:
stock DayOfWeakName(UTC)
{
new dayname[32];
switch(((gettime()+UTC*3600)/86400)%7)
{
case 0: strcat(dayname, "Четверг");
case 1: strcat(dayname, "Пятница");
case 2: strcat(dayname, "Суббота");
case 3: strcat(dayname, "Воскресенье");
case 4: strcat(dayname, "Понедельник");
case 5: strcat(dayname, "Вторник");
case 6: strcat(dayname, "Среда");
}
return dayname;
}
Что такое UTC?PHP код:
stock GetWeakName(UTC, name[12])
{
static const
days_weak[][] =
{
!"Четверг",
!"Пятница",
!"Суббота",
!"Воскресенье",
!"Понедельник",
!"Вторник",
!"Среда"
};
strcat(name, days_weak[(((gettime()+UTC*3600)/86400)%7)]);
}
Последний раз редактировалось Desulaid; 27.01.2016 в 10:28.
TheOrsini (27.01.2016)
Пара косяков есть, поправил:
Но заполнение массива days_week лучше тоже вынести в параметры, чтобы можно было сохранить мультиязычность функции.PHP код:
stock GetWeekName(UTC, name[], size = sizeof(name))
{
static const
days_week[][] =
{
!"Четверг",
!"Пятница",
!"Суббота",
!"Воскресенье",
!"Понедельник",
!"Вторник",
!"Среда"
};
return
strunpack(name, days_week[(((gettime()+UTC*3600)/86400)%7)], size);
}
То есть как-то так:
PHP код:
enum WeekLang {
WEEK_LANG_ENGLISH,
WEEK_LANG_RUSSIAN,
}
static const
gDaysOfWeek[WeekLang][][] = {
{
!"Thursday",
!"Friday",
!"Saturday",
!"Sunday",
!"Monday",
!"Tuesday",
!"Wednesday"
},
{
!"Четверг",
!"Пятница",
!"Суббота",
!"Воскресенье",
!"Понедельник",
!"Вторник",
!"Среда"
}
};
stock GetWeekName(UTC, name[], const size = sizeof(name), const WeekLang:lang = WEEK_LANG_ENGLISH)
{
return
strunpack(name, gDaysOfWeek[lang][((gettime() + UTC * 3600) / 86400) % 7], size);
}
Последний раз редактировалось ziggi; 27.01.2016 в 11:35.
$continue$ (27.01.2016) Desulaid (27.01.2016) Mexanizm (30.03.2021) Nash_Brigers (06.05.2016) Profyan (18.08.2016) punkochel (24.09.2020) TheOrsini (27.01.2016) [ForD] (27.01.2016)
Благодарю за помощь
Salvacore (27.01.2016)
Високосные года учитываются?
Соглашусь, пожалуй. Я тут подумал и, кажется, первый вариант учитывает високосный год.
- - - Добавлено - - -
Есть еще вариант
Слизал с варианта на PHP :DPHP код:
stock GetDay(year, month, day, name[], const size = sizeof(name))
{
static const
days_week[][] =
{
!"Понедельник",
!"Вторник",
!"Среда",
!"Четверг",
!"Пятница",
!"Суббота",
!"Воскресенье"
};
new
a = (12 - month) / 12,
y = year - a,
m = month + 12 * a - 2,
d = (7000 + day + y + (y/4) - (y/100) + (y/400) + ((31*m)/12))%7;
return strunpack(name, days_week[d], size);
}
main()
{
new
name[12],
year, month, day;
getdate(year, month, day);
GetDay(year, month, day, name);
print(name);
}
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)