any way?
#1

Hi everyone, how can I optimizate this? This function converts timestamp to date:

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;
}
To get timestamp, Im using ****** function:

pawn Код:
stock mktime(hour, minute, second, day, month, year)
{
    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;
        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;
}
Reply


Messages In This Thread
any way? - by Gh0sT_ - 09.09.2011, 16:09
Re: any way? - by JaTochNietDan - 09.09.2011, 16:35
Re: any way? - by Gh0sT_ - 09.09.2011, 18:33

Forum Jump:


Users browsing this thread: 1 Guest(s)