07.09.2011, 19:46
OK. Now other question.
Is there a way to optimizate this? Because, this function is made ~1,5 years ago, so I think there might be a better way?
Im using mktime function by ****** -
pawn Код:
stock date(timestamp)
{
new year = 1970, day = 0, month = 0, hour = 0, mins = 0, sec = 0;
new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
new returnstring[21];
while(timestamp > 31622400)
{
timestamp -= 31536000;
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) timestamp -= 86400;
++ year;
}
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) days_of_month[1] = 29;
else days_of_month[1] = 28;
while(timestamp > 86400)
{
timestamp -= 86400;
++ day;
if(day == days_of_month[month]) day = 0, ++ month;
}
while(timestamp > 60)
{
timestamp -= 60;
++ mins;
if(mins == 60) mins = 0, ++ hour;
}
sec = timestamp;
format(returnstring, 21, "%02d/%02d/%02d %02d:%02d:%02d", year, month + 1, day + 1, hour, mins, sec);
return returnstring;
}
Im using mktime function by ****** -
pawn Код:
stock mktime(hour, minute, second, day, month, year) // By: ******
{
static const
days_of_month[12] =
{
0 * 86400, 31 * 86400, 59 * 86400,
90 * 86400, 120 * 86400, 151 * 86400,
181 * 86400, 212 * 86400, 243 * 86400,
273 * 86400, 304 * 86400, 334 * 86400
};
static
lMonth, lYear, lMonthS, lYearS;
if (year != lYear)
{
year -= 1970;
lYearS = year * 31536000;
lYearS += 86400 * (year / 4);
year += 70;
lYearS -= (year / 100) * 86400;
year += 300;
lYearS += (year / 400) * 86400;
year += 1600; // 1970 - 370
lYear = year;
}
if (month != lMonth)
{
--month;
lMonthS = days_of_month[month];
if (IsLeapYear(year) && month >= 2)
{
lMonthS += 86400;
}
lMonth = month + 1;
}
day = (day - 1) * 86400;
hour = (hour - (0 TIME_ZONE)) * 3600;
minute = minute * 60;
return lYearS + lMonthS + day + hour + minute + second;
}