09:05
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 1
  • 1
Функция для преоброзования времени в юникстайм
ImperealДата: Четверг, 22.09.2011, 17:10 | Сообщение # 1
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Нужна функция для преобразования обычного времени в юникстайм.
Говорят, она стандартна в павн, подскажите кто знает.
Заранее спасибо.



Прощай самп-рус =Р
Fus1Дата: Четверг, 22.09.2011, 17:22 | Сообщение # 2
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Попробуй это ?
ImperealДата: Четверг, 22.09.2011, 17:26 | Сообщение # 3
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Fus1, нужен не конвертор, а конкретно функция, так как преобразовывать в моде буду.
P.S. Нужна только функция перевода из стандартного вида даты,времени в юникс, из юникса в стандартное не надо. :)



Прощай самп-рус =Р
Fus1Дата: Четверг, 22.09.2011, 17:40 | Сообщение # 4
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Может быть кому пригодиться ещё.

Вот , функция Возвращает UNIX-timestamp

Code
stock mktime(uhour,uminute,usecond,uday,umonth,uyear)     
{
     new timestamp2;
     timestamp2 = usecond + (uminute * 60) + (uhour * 3600);
     new days_of_month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
     if ( ((uyear % 4 == 0) && (uyear % 100 != 0)) || (uyear % 400 == 0) )     
            {
     days_of_month[1] = 29;
     }
            else     
            {
     days_of_month[1] = 28;
     }     
     new days_this_year = 0;
     days_this_year = --uday;
     if(umonth > 1)     
            {
         for(new i=0; i<umonth-1;i++)     
                {
         days_this_year += days_of_month[i];
         }
     }
     timestamp2 += days_this_year * 86400;
     for(new j=1970;j<uyear;j++)     
            {
      timestamp2 += 31536000;
      if ( ((j % 4 == 0) && (j % 100 != 0)) || (j % 400 == 0) ) timestamp2 += 86400;
     }
     return timestamp2;
}


Ещё,

стандартная функция gettime возвращает текущий unix timestamp,
она также может возвращать по ссылке отдельные значения часа, минуты и секунды как обычно. Чтобы узнать unix timestamp сервера , можно просто написать new stamp = gettime();

стандартная getdate возвращает день текущего года по порядку ну и, канеш, по ссылке возврашает день месяц и год отдельно. К примеру, если на дворе 23-е февраля, то getdate(); вернет 54 (31 дня января + 23 февраля).

Возвращает UNIX TIMESTAMP в соответствии с указанной датой.

Code
stock date_to_timestamp
(
    year = 1970,    month = 1,    day  = 1,
    hour =  0,    minute = 0,    second = 0
)
{
    switch ( month )
    {
     case 2 : day += 31;    case 3 : day += 59;    case 4 : day += 90;
     case 5 : day += 120;    case 6 : day += 151;    case 7 : day += 181;
     case 8 : day += 212;    case 9 : day += 243;    case 10 : day += 273;
     case 11 : day += 304;    case 12 : day += 334;
    }

    return ( second + minute*60 + hour*3600 + (day - 1)*86400
     + (year - 1970)*31557600 + ( year % 4 == 0 ? 21600 : 0 ) );
}


timestamp_to_date - обратное преобразование из unix timestamp в отдельные - год, месяц, число, час, минуту, секунду.

Code
stock timestamp_to_date
(
  unix_timestamp = 0,

  & year = 1970,  & month = 1,  & day  = 1,
  & hour =  0,  & minute = 0,  & second = 0
)
{
  year = unix_timestamp / 31557600;
  unix_timestamp -= year * 31557600;
  year += 1970;

  if ( year % 4 == 0 ) unix_timestamp -= 21600;

  day = unix_timestamp / 86400;

  switch ( day )
  {
   // в second будет временно хранится число месяца
   case  0..30 : { second = day;    month = 1; }
   case  31..58 : { second = day - 31; month = 2; }
   case  59..89 : { second = day - 59; month = 3; }
   case 90..119 : { second = day - 90; month = 4; }
   case 120..150 : { second = day - 120; month = 5; }
   case 151..180 : { second = day - 151; month = 6; }
   case 181..211 : { second = day - 181; month = 7; }
   case 212..242 : { second = day - 212; month = 8; }
   case 243..272 : { second = day - 243; month = 9; }
   case 273..303 : { second = day - 273; month = 10; }
   case 304..333 : { second = day - 304; month = 11; }
   case 334..366 : { second = day - 334; month = 12; }
  }

  unix_timestamp -= day * 86400;
  hour = unix_timestamp / 3600;

  unix_timestamp -= hour * 3600;
  minute = unix_timestamp / 60;

  unix_timestamp -= minute * 60;
  day = second + 1;
  second = unix_timestamp;
}



Сообщение отредактировал Fus1 - Четверг, 22.09.2011, 17:42
ImperealДата: Четверг, 22.09.2011, 22:56 | Сообщение # 5
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Fus1, Проверил последнии 2 функции, работают не коректно. :(
Ладно, свою напишу, все же спасибо за помощь...



Прощай самп-рус =Р

Сообщение отредактировал Impereal - Четверг, 22.09.2011, 22:57
Fus1Дата: Четверг, 22.09.2011, 23:41 | Сообщение # 6
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Quote (Impereal)
Impereal

Quote (Fus1)
стандартная функция gettime возвращает текущий unix timestamp,
она также может возвращать по ссылке отдельные значения часа, минуты и секунды как обычно. Чтобы узнать unix timestamp сервера , можно просто написать new stamp = gettime();


Не?
Кстати, а что именно не коректно работает ? Функции не мои, брал с оффа, писал Alexey вроде.

AlcoholikДата: Пятница, 23.09.2011, 11:24 | Сообщение # 7
Мастер джэдай
Группа: Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус:
либо я темы не понял, либо хз) В mysql есть такое, всё работает.
Quote
format(query, sizeof(query), "INSERT INTO logins (time,ip,userid,mesto) VALUES (UNIX_TIMESTAMP(),'%s',%d,1)", escip, sqlplayerid);

Добавлено (23.09.2011, 11:24)
---------------------------------------------
Или тебе куда это?


if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die();
Мониторинг sa:mp серверов


Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги.
Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
ImperealДата: Пятница, 23.09.2011, 16:03 | Сообщение # 8
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
KroN, оу, спасибо :)
Quote (Fus1)
Не? Кстати, а что именно не коректно работает ? Функции не мои, брал с оффа, писал Alexey вроде.

Ну получение да, можно gettime, а вот с обратным преоброзованием есть некоторые баги.



Прощай самп-рус =Р
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua