- 0
Problema TimeStampToDate TimestampToDate.inc(33) : error 021: symbol already defined: "IsLeapYear"
-
Similar Content
-
- 7 answers
- 1,691 views
-
- 3 answers
- 1,931 views
-
- 3 replies
- 238 views
-
- 1 reply
- 191 views
-
- 1 answer
- 599 views
-
-
Recently Browsing 0 members
- No registered users viewing this page.
Question
Negrici Rares
/*
- Timestamp To Date converter -
- Made by Jochemd -
- http://forum.sa-mp.com/member.php?u=580 -
native TimestampToDate(Timestamp, &year, &month, &day, &hour, &minute, &second, HourGMT, MinuteGMT = 0);
native DateToTimestamp(str[11]);
*/
#include <a_samp>
#include <sscanf2>
#define SPLITTER .
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;
Timestamp -= 172798; // Delete two days from the current timestamp. This is necessary, because the timestamp retrieved using gettime() includes two too many days.
for(;;)
{
if(Timestamp >= 31536000)
{
year ++;
Timestamp -= 31536000;
tmp ++;
if(tmp == 4)
{
if(Timestamp >= 31622400)
{
tmp = 0;
year ++;
Timestamp -= 31622400;
}
else break;
}
}
else break;
}
for(new i = 0; i < 12; i ++)
{
if(Timestamp >= MonthTimes[i][2 + IsLeapYear(year)])
{
month ++;
Timestamp -= MonthTimes[i][2 + IsLeapYear(year)];
}
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;
}
stock DateToTimestamp(str[11])
{
new date[3]; // date[0] = day date[1] = month date[2] = year
if(!sscanf(str,"p<"#SPLITTER">ddd",date[0],date[1],date[2]))
{
new total = 0, tmp = 0;
total += date[0] * 86400;
if(date[1] == 2 && date[0] < 29) tmp = ((date[2] - 1968) / 4 - 2);
else tmp = ((date[2] - 1968) / 4 - 1);
total += tmp * 31622400;
total += (date[2] - 1970 - tmp) * 31536000;
for(new i = 1; i < date[1]; i ++) total += MonthTimes[i][0 + IsLeapYear(date[2])] * 86400;
return total;
}
else return -1;
}
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now