03.12.2012, 16:13
(
Последний раз редактировалось Ballu Miaa; 04.12.2012 в 04:15.
)
EDIT: I just got to know. Both the function timestamp() which uses mktime() by ****** and the native function of SA-MP gettime() to get Current Time Stamps according to the GMT of a region are not Correct.
1. gettime() - Which Returns Current Time Stamps -
Bug: Exact two Days greater then the Current Timestamps for Indian Time Zone: GMT +5:30.
Fix: Subtract 2 * 86400 from the returned TimeStamps.
2. timestamp() - Which Returns Current TIme Stamps -
Bug: Returns incorrect number of seconds since the epoch.
Fix: Subtract 279000 from the received timestamps.
The proof i would say. Or can say Code for correcting Time Stamps fix gettime() SA-MP native.
The Output was !!
Second on Getting the TimeStamp using gettime() as well as with timestamp by ******.
The Output was:
EDIT:
Here is the Correct code of timestamp() and mktime() by ******.
mktime() is fixed also which returns TimeStamps for any particular date.
1. gettime() - Which Returns Current Time Stamps -
Bug: Exact two Days greater then the Current Timestamps for Indian Time Zone: GMT +5:30.
Fix: Subtract 2 * 86400 from the returned TimeStamps.
2. timestamp() - Which Returns Current TIme Stamps -
Bug: Returns incorrect number of seconds since the epoch.
Fix: Subtract 279000 from the received timestamps.
The proof i would say. Or can say Code for correcting Time Stamps fix gettime() SA-MP native.
pawn Код:
new ts = gettime() - 2 * 86400,ts2[6];
printf("Current Time Stamp: %d",ts);
TimestampToDate(ts, ts2[0], ts2[1], ts2[2], ts2[3], ts2[4], ts2[5], 5 ,30);
printf("Current Date: %d/%d/%d and Time: %d:%d:%d", ts2[0], ts2[1], ts2[2], ts2[3], ts2[4], ts2[5]);
Код:
[22:41:17] Current Time Stamp: 1354381877 [22:41:17] Current Date: 2012/12/3 and Time: 22:41:17
pawn Код:
new ts = timestamp(),ts2 = gettime();
printf("Current Time Stamp: %d and %d",ts,ts2);
Код:
[22:55:36] Current Time Stamp: 1354748136 and 1354555536
EDIT:
Here is the Correct code of timestamp() and mktime() by ******.
mktime() is fixed also which returns TimeStamps for any particular date.
pawn Код:
stock timestamp()
{
new
h,
m,
s,
d,
n,
y;
gettime(h, m, s);
getdate(y, n, d);
return mktime(h, m, s, d, n, y);
}
/*----------------------------------------------------------------------------*-
Function:
mktime
Params:
hour - Hour of time.
minute - Minute of time.
second - Second of time.
day - Day of date.
month - Month of date.
year - Year of date.
Return:
Timestame of a given date and time.
Notes:
Uses a check system as it's used in Player_OnPlayerDisconnect when lots of
people can disconnect at the same time on gmx so has code to make large
numbers of simultaneous calls more efficient.
-*----------------------------------------------------------------------------*/
stock mktime(hour, minute, second, day, month, year)
{
static
days_of_month[12] =
{
31,
28,
31,
30,
31,
30,
31,
31,
30,
31,
30,
31
},
lMinute,
lHour,
lDay,
lMonth,
lYear,
lMinuteS,
lHourS,
lDayS,
lMonthS,
lYearS;
if (year != lYear)
{
lYearS = 0;
for (new j = 1970; j < year; j++)
{
lYearS += 31536000;
if ((!(j % 4) && (j % 100)) || !(j % 400)) lYearS += 86400;
}
lYear = year;
}
if (month != lMonth)
{
lMonthS = 0;
month--;
for (new i = 0; i < month; i++)
{
lMonthS += days_of_month[i] * 86400;
if ((i == 1) && ((!(year % 4) && (year % 100)) || !(year % 400))) lMonthS += 86400;
}
lMonth = month;
}
if (day != lDay)
{
lDayS = day * 86400;
lDay = day;
}
if (hour != lHour)
{
lHourS = hour * 3600;
lHour = hour;
}
if (minute != lMinute)
{
lMinuteS = minute * 60;
lMinute = minute;
}
return lYearS + lMonthS + lDayS + lHourS + lMinuteS + second - 279000;
}