TimestampToDate function - two days far
#1

Hello,

If I use my TimestampToDate function to calculate the current date from the current timestamp, it will give the exact date and time, except two days too much. So today it would give 6-7-2012. I don't see anything wrong in my code. Read it down here.

pawn Код:
/*
-               Timestamp To Date converter             -
-                    Made by Jochemd                    -
-          http://forum.sa-mp.com/member.php?u=580      -
*/



#include <a_samp>

new MonthTimes[12][4] =
{
    { 31, 31, 2678400, 2678400 },
    { 28, 29, 2419200, 2505600 },
    { 31, 31, 2678400, 2678400 },
    { 30, 30, 2592000, 2592000 },
    { 31, 31, 2678400, 2678400 },
    { 30, 30, 2592000, 2592000 },
    { 31, 31, 2678400, 2678400 },
    { 31, 31, 2678400, 2678400 },
    { 30, 30, 2592000, 2592000 },
    { 31, 31, 2678400, 2678400 },
    { 30, 30, 2592000, 2592000 },
    { 31, 31, 2678400, 2678400 }
};

stock IsLeapYear(year)
{
    if(year % 4 == 0) return 1;
    else return 0;
}

stock TimestampToDate(Timestamp, &year, &month, &day, &hour, &minute, &second, HourGMT, MinuteGMT = 0)
{
    new tmp = 2;
    year = 1970,
    month = 1;
    for(;;)
    {
        if(Timestamp >= 31536000)
        {
            Timestamp -= 31536000;
            year ++;
            tmp ++;
            if(tmp == 4)
            {
                if(Timestamp >= 31622400)
                {
                    tmp = 0;
                    year ++;
                    Timestamp -= 31622400;
                }
                else break;
            }
        }
        else break;
    }
    if(IsLeapYear(year)) tmp = 3;
    else tmp = 2;
    for(new i = 0; i < 12; i ++)
    {
        if(Timestamp >= MonthTimes[i][tmp])
        {
            month ++;
            Timestamp -= MonthTimes[i][tmp];
        }
        else break;
       
    }
    day = 1 + (Timestamp / 86400);
    Timestamp %= 86400;
    hour = HourGMT + (Timestamp / 3600);
    Timestamp %= 3600;
    minute = MinuteGMT + (Timestamp / 60);
    second = (Timestamp % 60);
    if(minute > 59)
    {
        minute = 0;
        hour ++;
        if(hour > 23)
        {
            hour -= 24;
            day ++;
            if(day > MonthTimes[month][IsLeapYear(year)])
            {
                day = 1;
                month ++;
                if(month > 12)
                {
                    month = 1;
                    year ++;
                }
            }
        }
    }
    return 1;
}
I don't see anything wrong but maybe you do. Any idea?

Jochem
Reply
#2

use this: http://pastie.org/4198957
Reply
#3

Quote:
Originally Posted by KyleSmith
Посмотреть сообщение
I'm trying to make my own, wondering why it is not working.
Reply
#4

I still need help on this
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)