Trabalhando com datas no samp - hiwyn - 24/07/2022
Como salvar numa variavel
bonus[MAX_PLAYERS];
Com algum tipo de data no pawno pra uma hora de bonus de 1 hora, e quando você desse o comando /bonus
Se você ainda tivesse bonus diz "você ainda tem 45 minutos de bonus" por exemplo?
RE: Trabalhando com datas no samp - Luiz - 25/07/2022
Use timestamp.
Código PHP: bonus[playerid] = gettime() + 3600;
// Para verificar o tempo restante: printf("Faltam %d minutos para o seu bônus acabar.", (bonus[playerid]-gettime())/60);
RE: Trabalhando com datas no samp - hiwyn - 28/07/2022
(25/07/2022 00:46)Luiz Escreveu: Use timestamp.
Código PHP: bonus[playerid] = gettime() + 3600;
// Para verificar o tempo restante: printf("Faltam %d minutos para o seu bônus acabar.", (bonus[playerid]-gettime())/60);
Desculpa a demora Luiz, obrigado pela base, reputado!
Mas e pra dias, meses, horas?
RE: Trabalhando com datas no samp - xbruno1000x - 28/07/2022
(28/07/2022 18:02)hiwyn Escreveu: Desculpa a demora Luiz, obrigado pela base, reputado!
Mas e pra dias, meses, horas?
Basta ao invés de usar GetTime() use o Now().
RE: Trabalhando com datas no samp - Carlos Victor - 29/07/2022
(28/07/2022 18:02)hiwyn Escreveu: (25/07/2022 00:46)Luiz Escreveu: Use timestamp.
Código PHP: bonus[playerid] = gettime() + 3600;
// Para verificar o tempo restante: printf("Faltam %d minutos para o seu bônus acabar.", (bonus[playerid]-gettime())/60);
Desculpa a demora Luiz, obrigado pela base, reputado!
Mas e pra dias, meses, horas?
Para tempo, no caso hora, minutos e segundos, você pode usar a função gettime, é uma função que retorna o atual valor do Unix Timestamp, e pra usar ele é bem simples, usando apenas cálculos como:
Horas: Você deve subtrair o valor antigo com o valor atual e dividir por 3600, como a fórmula:
Código PHP: new tempoAntigo = 1659131860; // 18:57:40 new tempoAtual = 1659135460; // 19:57:40
printf("Horas restantes: %d", (tempoAtual - tempoAntigo) / 3600); //> Horas restantes: 1
Minutos: Você deve subtrair o valor antigo com o valor atual e dividir por 60.
Código PHP: new tempoAntigo = 1659135405; // 19:56:40 new tempoAtual = 1659135460; // 19:57:40
printf("Minutos restantes: %d", (tempoAtual - tempoAntigo) / 60); //> Minutos restantes: 1
Segundos: Você deve subtrair o valor antigo com o valor atual e retornar o resto da divisão por 60.
Código PHP: new tempoAntigo = 1659135405; // 19:56:45 new tempoAtual = 1659135460; // 19:57:40
printf("Segundos restantes: %d", (tempoAtual - tempoAntigo) % 60); //> Segundos restantes: 55
E com isso você consegue fazer os cálculos para obter a hora, minuto e segundos.
Para datas, como: Dia, mês e ano
Dia: Você deverá dividir o valor atual com o valor antigo por 86400, que é o equivalente a 1 dia em segundos.
Código PHP: new tempoAntigo = 1659050500; // 28/07/2022 new tempoAtual = 1659136900; // 29/07/2022
printf("Dias restantes: %d", (tempoAtual - tempoAntigo) / 86400); //> Dias restantes: 1
Mês: Você deverá subtrair o valor atual com o valor antigo, pegar o resto da divisão entre 86300(1 dia) vezes 30(1 mês)
Código PHP: new tempoAntigo = 1659050500; // 29/06/2022 new tempoAtual = 1659136900; // 29/07/2022
printf("Meses restantes: %d", (tempoAtual - tempoAntigo) / (86400 * 30)); //> Meses restantes: 1
Ano:
Código PHP: new tempoAntigo = 1609545600; // 29/07/2021 new tempoAtual = 1641081600; // 29/07/2022
printf("Ano restantes: %d", (tempoAtual - tempoAntigo) / (86400 * 30 * 12)); //> Ano restantes: 1
É basicamente isso, usando a função gettime, que retorna o Unix Timestamp, você pode optar pelo getdate, que retorna o atual dia do ano, por exemplo, hoje estamos no dia 210.
Espero ter ajudado, qualquer dúvida avise, e caso eu errei, corrigem-me.
Na verdade, talvez eu tenha me equivocado com o Unix Timestamp, a função gettime ela retorna a hora, minuto, segundo caso queira, sem ter que fazer esses cálculos todo.
A função só irá retornar o Unix Timestamp caso você não puxar nenhum dos dados, gettime(hour=0, minute=0, second=0)
Então, caso tu queira fazer algo mais simples, pegar só os segundos, minutos ou horas, é só criar uma váriavel e fazer.
Código PHP: new segundos, minutos, hora; gettime(hora, minutos, segundos);
printf("Segundos: %d", segundos); printf("Minutos: %d", minutos); printf("Horas: %d", hora);
//Segundos: 46 //Minutos: 38 //Horas: 20
Isso é válido também pro getdate, que é semelhante ao gettime.
Código PHP: new dia, mes, ano; getdate(ano, mes, dia);
printf("Dia: %d", dia); printf("Mes: %d", mes); printf("Ano: %d", ano);
//Dia: 29 //Mês: 7 //Ano: 2022
Desculpa a explicação desnecessária talvez pra algo simples, eu me confundi, mas de qualquer forma, está ai os exemplos acimas.
RE: Trabalhando com datas no samp - hiwyn - 20/09/2022
(29/07/2022 20:33)Carlos Victor Escreveu: (28/07/2022 18:02)hiwyn Escreveu: (25/07/2022 00:46)Luiz Escreveu: Use timestamp.
Código PHP: bonus[playerid] = gettime() + 3600;
// Para verificar o tempo restante: printf("Faltam %d minutos para o seu bônus acabar.", (bonus[playerid]-gettime())/60);
Desculpa a demora Luiz, obrigado pela base, reputado!
Mas e pra dias, meses, horas?
Para tempo, no caso hora, minutos e segundos, você pode usar a função gettime, é uma função que retorna o atual valor do Unix Timestamp, e pra usar ele é bem simples, usando apenas cálculos como:
Horas: Você deve subtrair o valor antigo com o valor atual e dividir por 3600, como a fórmula:
Código PHP: new tempoAntigo = 1659131860; // 18:57:40 new tempoAtual = 1659135460; // 19:57:40
printf("Horas restantes: %d", (tempoAtual - tempoAntigo) / 3600); //> Horas restantes: 1
Minutos: Você deve subtrair o valor antigo com o valor atual e dividir por 60.
Código PHP: new tempoAntigo = 1659135405; // 19:56:40 new tempoAtual = 1659135460; // 19:57:40
printf("Minutos restantes: %d", (tempoAtual - tempoAntigo) / 60); //> Minutos restantes: 1
Segundos: Você deve subtrair o valor antigo com o valor atual e retornar o resto da divisão por 60.
Código PHP: new tempoAntigo = 1659135405; // 19:56:45 new tempoAtual = 1659135460; // 19:57:40
printf("Segundos restantes: %d", (tempoAtual - tempoAntigo) % 60); //> Segundos restantes: 55
E com isso você consegue fazer os cálculos para obter a hora, minuto e segundos.
Para datas, como: Dia, mês e ano
Dia: Você deverá dividir o valor atual com o valor antigo por 86400, que é o equivalente a 1 dia em segundos.
Código PHP: new tempoAntigo = 1659050500; // 28/07/2022 new tempoAtual = 1659136900; // 29/07/2022
printf("Dias restantes: %d", (tempoAtual - tempoAntigo) / 86400); //> Dias restantes: 1
Mês: Você deverá subtrair o valor atual com o valor antigo, pegar o resto da divisão entre 86300(1 dia) vezes 30(1 mês)
Código PHP: new tempoAntigo = 1659050500; // 29/06/2022 new tempoAtual = 1659136900; // 29/07/2022
printf("Meses restantes: %d", (tempoAtual - tempoAntigo) / (86400 * 30)); //> Meses restantes: 1
Ano:
Código PHP: new tempoAntigo = 1609545600; // 29/07/2021 new tempoAtual = 1641081600; // 29/07/2022
printf("Ano restantes: %d", (tempoAtual - tempoAntigo) / (86400 * 30 * 12)); //> Ano restantes: 1
É basicamente isso, usando a função gettime, que retorna o Unix Timestamp, você pode optar pelo getdate, que retorna o atual dia do ano, por exemplo, hoje estamos no dia 210.
Espero ter ajudado, qualquer dúvida avise, e caso eu errei, corrigem-me.
Na verdade, talvez eu tenha me equivocado com o Unix Timestamp, a função gettime ela retorna a hora, minuto, segundo caso queira, sem ter que fazer esses cálculos todo.
A função só irá retornar o Unix Timestamp caso você não puxar nenhum dos dados, gettime(hour=0, minute=0, second=0)
Então, caso tu queira fazer algo mais simples, pegar só os segundos, minutos ou horas, é só criar uma váriavel e fazer.
Código PHP: new segundos, minutos, hora; gettime(hora, minutos, segundos);
printf("Segundos: %d", segundos); printf("Minutos: %d", minutos); printf("Horas: %d", hora);
//Segundos: 46 //Minutos: 38 //Horas: 20
Isso é válido também pro getdate, que é semelhante ao gettime.
Código PHP: new dia, mes, ano; getdate(ano, mes, dia);
printf("Dia: %d", dia); printf("Mes: %d", mes); printf("Ano: %d", ano);
//Dia: 29 //Mês: 7 //Ano: 2022
Desculpa a explicação desnecessária talvez pra algo simples, eu me confundi, mas de qualquer forma, está ai os exemplos acimas.
eu já tinha conseguido com a resposta do outro amigo lá, mas te reputei por mandar outra mais completa, pode ajudar outra pessoa
|