SA-MP Forums Archive
[Pedido] Converter gettime() para data e hora - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Pedido] Converter gettime() para data e hora (/showthread.php?tid=583208)



Converter gettime() para data e hora - pWesley - 26.07.2015

Alguйm por acaso sabe algum cуdigo que converte informaзхes de gettime() em data e hora?? Ficarei grato se alguйm tiver o mesmo.


Re: Converter gettime() para data e hora - Lуs - 26.07.2015

PHP код:
// Convert UNIX time to human readable time
stock convertTimestamptimestamp_form=)
{
    
timestamp -= 10800;
    new 
year=1970day=0month=0hour=0mins=0sec=0;

    new 
days_of_month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    new 
names_of_month[12][10] = {"Janeiro","Fevereiro","MarГ§o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};
    new 
returnstring[32];

    while(
timestamp>31622400){
        
timestamp -= 31536000;
        if ( ((
year == 0) && (year 100 != 0)) || (year 400 == 0) ) timestamp -= 86400;
        
year++;
    }

    if ( ((
year == 0) && (year 100 != 0)) || (year 400 == 0) )
        
days_of_month[1] = 29;
    else
        
days_of_month[1] = 28;


    while(
timestamp>86400){
        
timestamp -= 86400day++;
        if(
day==days_of_month[month]) day=0month++;
    }

    while(
timestamp>60){
        
timestamp -= 60mins++;
        if( 
mins == 60mins=0hour++;
    }

    
sec=timestamp;

    switch( 
_form ){
        case 
1format(returnstring31"%02d/%02d/%d %02d:%02d:%02d"day+1month+1yearhourminssec);
        case 
2format(returnstring31"%s %02d, %d, %02d:%02d:%02d"names_of_month[month],day+1,yearhourminssec);
        case 
3format(returnstring31"%d %c%c%c %d, %02d:%02d"day+1,names_of_month[month][0],names_of_month[month][1],names_of_month[month][2], year,hour,mins);
        case 
4format(returnstring31"%02d.%02d.%d-%02d:%02d:%02d"day+1month+1yearhourminssec);
        default: 
format(returnstring31"%02d:%02d:%02d %02d/%02d/%d"hourminssecday+1month+1year);
    }

    return 
returnstring;




Re: Converter gettime() para data e hora - pWesley - 26.07.2015

Obrigado. Adicionei reputaзгo.

@Edit
Tem um pequeno probleminha, ele tб retornando uma data MUITO ANTIGA, ela me retorna ano 01/03/1970.


Re: Converter gettime() para data e hora - n0minal - 26.07.2015

Use CTime plugin, todas as includes pra timestamp sгo falhas, usando CTime vocк pode ficar tranquilo quanto а funcionalidade do seu cуdigo.

Aqui vai uma funзгo minha que fiz pro meu projeto e um exemplo:

Код:
public OnPlayerConnect(playerid)
{
new strTime[32], boasvindas[128]; GetDateFromTime(gettime(), strTime); format(boasvindas, 128, "Olб, seja bem vindo, a data de hoje й %s!", strTime); SendClientMessage(playerid, -1, boasvindas); return 1;
} stock GetDateFromTime(timestamp, string[32]) { new tm <tmStamp>; localtime(Time:timestamp, tmStamp); strftime(string, sizeof(string), "%d/%m/%y", tmStamp); //retorna dd/mm/aaaa return 1; }
Jamais use include de timestamp, includes sгo falhas, bugadas e mais lentas. Caso queira mudar o formato da data obtida, adcionar hora ou outras coisas, basta olhar os especificadores do strftime


Re: Converter gettime() para data e hora - pWesley - 26.07.2015

Sу tem um problema Leon, o mesmo nгo retorna uma data verdadeira. Ele acaba retornando uma data muito antiga.


Re: Converter gettime() para data e hora - n0minal - 26.07.2015

Quote:
Originally Posted by pWesley
Посмотреть сообщение
Sу tem um problema Leon, o mesmo nгo retorna uma data verdadeira. Ele acaba retornando uma data muito antiga.
Deleta esse cуdigo que o lуs passou, baixa o CTime plugin, dб #include <ctime> depois de botar a include na sua pasta do pawno, bota o ctime nos plugins do seu server.cfg e usa meu cуdigo pra fazer o que vocк quer...


Re: Converter gettime() para data e hora - pWesley - 26.07.2015

Quote:
Originally Posted by ipsLeon
Посмотреть сообщение
Deleta esse cуdigo que o lуs passou, baixa o CTime plugin, dб #include <ctime> depois de botar a include na sua pasta do pawno, bota o ctime nos plugins do seu server.cfg e usa meu cуdigo pra fazer o que vocк quer...
Foi exatamente o que eu fiz. E mesmo assim, ele me retorna 24/03/1970.


Re: Converter gettime() para data e hora - n0minal - 26.07.2015

Quote:
Originally Posted by pWesley
Посмотреть сообщение
Foi exatamente o que eu fiz. E mesmo assim, ele me retorna 24/03/1970.
Me mostra seu cуdigo por favor...


Re: Converter gettime() para data e hora - CaioTJF - 26.07.2015

Vocк sу quer que retorne a data em uma string?


Re: Converter gettime() para data e hora - pWesley - 27.07.2015

Eu dei uma modificada no seu cуdigo Leon, ficou assim:

pawn Код:
GetDateFromTime(timestamp, string[32])
{
    new tm <tmStamp>;
    localtime(Time:timestamp, tmStamp);

    strftime(string, sizeof(string), "%d/%m/%Y - %H:%M:%S", tmStamp); //retorna dd/mm/aaaa
    return 1;
}
Eu uso dessa forma:

pawn Код:
static vString[32];
GetDateFromTime(APlayerData[playerid][pExpira] - gettime(), vString);
format(tString, sizeof(tString), "SERVER: Vocк й um Player %s, o mesmo expira em %s.", RankVIP(APlayerData[playerid][pVIP]), vString);



Re: Converter gettime() para data e hora - n0minal - 27.07.2015

Quote:
Originally Posted by pWesley
View Post
Eu dei uma modificada no seu cуdigo Leon, ficou assim:

pawn Code:
GetDateFromTime(timestamp, string[32])
{
    new tm <tmStamp>;
    localtime(Time:timestamp, tmStamp);

    strftime(string, sizeof(string), "%d/%m/%Y - %H:%M:%S", tmStamp); //retorna dd/mm/aaaa
    return 1;
}
Eu uso dessa forma:

pawn Code:
static vString[32];
GetDateFromTime(APlayerData[playerid][pExpira] - gettime(), vString);
format(tString, sizeof(tString), "SERVER: Vocк й um Player %s, o mesmo expira em %s.", RankVIP(APlayerData[playerid][pVIP]), vString);
Dб um printf nesse pExpira pois deve ter algo de errado com ele, eu criei um macro pra converter dias pra segundos, pode ser que seja ъtil pra vocк:

Quote:

#define DaysToSeconds(%0) (%0 * 86400)

Com isso, fica mais fбcil de converter dias pra adcionar no timestamp, por exemplo, caso vocк queira criar um vip que dure 30 dias a partir da data de hoje ficaria assim:

Code:
#define DaysToSeconds(%0)	(%0 * 86400)

APlayerData[playerid][pExpira] = gettime() + DaysToSeconds(30);
Й bem fбcil de usar e dб super certo