Skocz do zawartości

Znajdź zawartość

Wyświetlanie wyników dla tagów 'unix time' .



Więcej opcji wyszukiwania

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Typ zawartości


Forum

  • Społeczność Pawno.PL
    • Ogłoszenia
    • Projekty Pawno.PL
  • Programowanie PAWN
    • Bazy danych
    • Pomocne materiały
    • Rozwiązywanie problemów
    • Gotowe rozwiązania
  • Programowanie ogólne
    • LUA
    • Języki programowania
    • Webdevelopment
  • Grand Theft Auto V - Multiplayer
    • GTA MP - Dyskusja
    • GTA MP - Programowanie
    • GTA MP - Serwery
  • Grand Theft Auto San Andreas - Multiplayer
    • San Andreas MultiPlayer - Rozmowy
    • San Andreas MultiPlayer - Serwery
    • Multi Theft Auto - Rozmowy
    • Multi Theft Auto - Serwery
  • Singleplayer
    • V
    • IV
    • San Andreas
    • Vice City
    • I, II, III i pozostałe
  • Technologia komputerowa / Administracja serwerów
    • Serwery wirtualne / dedykowane
    • Komputery / laptopy
  • Pozostałe
    • Oferty
    • Firmy hostingowe
    • Off Topic
    • Archiwum

Szukaj wyników w...

Znajdź wyniki, które...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Dołączył

  • Od tej daty

    Do tej daty


Grupa podstawowa


Strona WWW


Skype


Gadu-Gadu


Miejscowość


Nazwa serwera


Adres IP

Znaleziono 1 wynik

  1. PrzMas

    Czas uniksowy

    Jak wiadomo SA-MP'owa funkcja gettime (wywołana bez przekazywania do niej argumentów) zwraca czas uniksowy aktualny w danym systemie operacyjnym, jednak bez uwzględnienia strefy czasowej oraz czasu letniego. W niniejszym temacie publikuję funkcje operujące na niniejszym czasie, jedna przelicza podaną datę i godzinę na znacznik (z możliwością odliczenia strefy czasowej oraz czasu letniego): a druga znacznik na datę, godzinę oraz dzień tygodnia (wartość 1-7) z uwzględnieniem strefy czasowej oraz czasu letniego: Dodatkowo prosta funkcja wyliczająca ilość dni, godzin, minut i sekund z podanej różnicy dwóch znaczników: [kompletny_kod_źródłowy] Najczęściej zadawane pytania (FAQ) 1. Jak zorganizować prosty algorytm czasowej rangi VIP na serwerze z wykorzystaniem znacznika czasu uniksowego? Należy zapisać zwrócony przez funkcję gettime() znacznik zwiększony o określony czas: new vip_expiry= gettime() +3*86400; // 86400 = 1 [doba/dzień] do bazy danych albo systemu plików. Sprawdzanie czy ranga VIP jest nadal aktywna może wyglądać następująco: if (vip_expiry != 0) // 0 oznacza, że należy pominąć sprawdzanie rangi VIP { new timenow= gettime(); // posix timestamp if (timenow < vip_expiry) // ranga aktywna { // wyświetlenie czasu do wygaśnięcia VIP-a new d,h,m,s; timediff(vip_expiry-timenow, d,h,m,s); new msg[144]; format(msg, sizeof(msg), "Do wygaśnięcia rangi VIP pozostało: %dd, %dg, %dm, %ds.", d,h,m,s); SendClientMessage(playerid, 0xffffffff, msg); } else // ranga nieaktywna { // wyświetlenie informacji dla gracza o wygaśnięciu rangi new d,h,m,s; timediff(timenow-vip_expiry, d,h,m,s); new msg[144]; format(msg, sizeof(msg), "Ranga VIP wygasła: %dd, %dg, %dm, %ds temu.", d,h,m,s); SendClientMessage(playerid, 0xffffffff, msg); // w bazie danych dla pola 'vip_expiry' należy zapisać wartość 0, // aby pominąć przyszłą-zbędną informację o wygaśnięciu VIP-a przy następnym sprawdzaniu } } Zmienna vip_expiry reprezentuje odpowiednią wartość pobraną z bazy danych lub systemu plików. 2. Jak wyświetlić aktualną datę, godzinę i dzień tygodnia na podstawie znacznika uniksowego? main() { new Y,M,D, h,m,s, w= unix2date(gettime(), Y,M,D, h,m,s, TIMEZONE, true); new const wd[][]= { {"poniedzialek"}, {"wtorek"}, {"sroda"}, {"czwartek"}, {"piatek"}, {"sobota"}, {"niedziela"} }; new buff[32]; format(buff, sizeof(buff), "%04d-%02d-%02d %02d:%02d:%02d %s", Y,M,D, h,m,s, wd[w-1]); print(buff); } 3. Jak sprawdzić czy określona data jest zgodna z kalendarzem oraz czasem uniksowym? Dla przykładu można utworzyć funkcję isvaliddate(), która zwróci prawdę (1) dla poprawnej daty: stock isvaliddate(Y,M,D, h=0,m=0,s=0) { new ts= date2unix(Y,M,D, h,m,s); if (ts < 0) return false; new Y2,M2,D2, h2,m2,s2; unix2date(ts, Y2,M2,D2, h2,m2,s2); return (s2 != s || m2 != m || h2 != h || D2 != D || M2 != M || Y2 != Y)?(false):(true); } Nieprawidłowe daty to: 30 lutego (luty ma najwyżej 29 dni, jeśli jest w roku przestępnym), 32 stycznia (miesiąc ma najwyżej 31 dni), 1 stycznia 2039 roku (limit czasu uniksowego to 19 stycznia 2038 roku o godzinie 03:14:07 dla liczb ze znakiem - signed integer). Uwagi ogólne Porównywane znaczniki powinny być względem siebie w jednakowej postaci (nie w sensie równe), czyli jeżeli jeden jest ze strefy czasowej GMT +1:00 a drugi GMT +0:00 to należy od pierwszego odjąć jedną godzinę i dopiero wówczas porównywać obydwa znaczniki. Funkcja gettime() celowo zwraca wartość/znacznik bez uwzględniania strefy czasowej i czasu letniego, bowiem w takiej postaci nie zajdą rozbieżności podczas porównań i obliczania różnic, zwłaszcza jeśli chodzi o czas letni. Strefy czasowej i czasu letniego należy używać jedynie podczas wyświetlania danego znacznika przeliczonego do postaci sformatowanej i czytelnej dla człowieka. Jeżeli ma być przeliczana (do późniejszych operacji) data (i godzina) podana ręcznie przez użytkownika (sczytana np sscanf-em) to dla funkcji date2unix() należy uwzględnić argumenty timezone oraz auto_dst.
×