Участник
Пользователь
- Сообщения
- 92
- Реакции
- 23
Всем привет. Кто-нибудь знает как определить текущий день недели в плагине?
new a = (14 - month) / 12;
new y = year - a;
new weekday = (day + y + y / 4 - y / 100 + y / 400 + (31 * (month + 12 * a - 2))) / 12) % 7;
#include <amxmodx>
#define PLUGIN_VERSION "1.0"
new const g_szCycles[][] = {
"monday", "mapcycle1.txt",
"tuesday", "mapcycle2.txt",
"wednesday", "mapcycle1.txt",
"thursday", "mapcycle2.txt",
"friday", "mapcycle1.txt",
"saturday", "mapcycle1.txt",
"sunday", "mapcycle2.txt"
}
public plugin_init() register_plugin("DayCycles", PLUGIN_VERSION, "OciXCrom")
public plugin_end() {
new szDay[10]
get_time("%A", szDay, charsmax(szDay))
for (new i; i < sizeof(g_szCycles) - 1; i += 2) {
if (equal(szDay, g_szCycles[i]))
set_cvar_string("mapcyclefile", g_szCycles[i + 1])
}
}
Что это за жесть?Для любой даты григорианского календаря позднее 1583 года, на практике не проверял, отсчет идет от воскресенья, то есть 0 - воскресенье, 1 - понедельник и т. д.
Код:new a = (14 - month) / 12; new y = year - a; new weekday = (day + y + y / 4 - y / 100 + y / 400 + (31 * (month + 12 * a - 2))) / 12) % 7;
https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_weekЧто это за жесть?
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int d;
int m;
int y;
string weekday(int d, int m, int y){
int LeapYears = (int) y/ 4;
long a = (y - LeapYears)*365 + LeapYears * 366;
if(m >= 2) a += 31;
if(m >= 3 && (int)y/4 == y/4) a += 29;
else if(m >= 3) a += 28;
if(m >= 4) a += 31;
if(m >= 5) a += 30;
if(m >= 6) a += 31;
if(m >= 7) a += 30;
if(m >= 8) a += 31;
if(m >= 9) a += 31;
if(m >= 10) a += 30;
if(m >= 11) a += 31;
if(m == 12) a += 30;
a += d;
int b = (a - 2) % 7;
switch (b){
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
}
}
int main(){
cin >> d >> m >> y;
cout << weekday(d, m, y);
}