Which 1?
#5

OK. Now other question.

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;
}
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 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;
}
Reply


Messages In This Thread
Which 1? - by Gh0sT_ - 07.09.2011, 15:05
Re: Which 1? - by Darnell - 07.09.2011, 15:55
Re: Which 1? - by Gh0sT_ - 07.09.2011, 15:56
Re: Which 1? - by KoczkaHUN - 07.09.2011, 16:16
Re: Which 1? - by Gh0sT_ - 07.09.2011, 19:46
Re: Which 1? - by Gh0sT_ - 08.09.2011, 12:17

Forum Jump:


Users browsing this thread: 2 Guest(s)