20/09/2022 04:40
(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
