Mostrar tempo na tela no formato Dia Hora Segundos
3 participantes
Página 1 de 1
Mostrar tempo na tela no formato Dia Hora Segundos
boa noite,
não sei se existe alguma função da unity que faz isso, mas eu queria fazer uma contagem de tempo regressiva de 3 dias, mas ao invés de mostrar na tela 4320 segundos, queria mostrar no formato por exemplo 1d 4h 25s, ou alguma coisa parecida com isso.
a contagem regressiva eu já fiz e funciona como eu quero, agora é só mostrar o tempo dessa forma.
É possível fazer isso?
não sei se existe alguma função da unity que faz isso, mas eu queria fazer uma contagem de tempo regressiva de 3 dias, mas ao invés de mostrar na tela 4320 segundos, queria mostrar no formato por exemplo 1d 4h 25s, ou alguma coisa parecida com isso.
a contagem regressiva eu já fiz e funciona como eu quero, agora é só mostrar o tempo dessa forma.
É possível fazer isso?
Flávio- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Mostrar tempo na tela no formato Dia Hora Segundos
Converter segundos pro formato Dia h : mm : ss ?
Bom, sabemos que uma hora tem 3600 segundos então dividimos o segundo por 3600 e isso vai ser convertido para horas. Quando a gente divide esse resultado por 24 (pois um dia tem 24 horas) convertemos pra dias.
Para as horas, vamos converter os segundos por horas novamente (segundo/3600) e coletar o resto da divisão por 24, ou seja, se dividir os segundos por 3600 e depois por 24 e obter 4 significa 4 dias, e daí pegar o que sobrou desses 4 dias, por exemplo, 12, seriam 4 dias e 12 horas.
E é só usar o mesmo raciocínio lógico para os minutos e segundos:
O Output será: 5d 12h:9m:43s
Lembrando que ali na variável "seconds" você coloca o valor em segundos que quer converter para dias, horas e minutos.
Bom, sabemos que uma hora tem 3600 segundos então dividimos o segundo por 3600 e isso vai ser convertido para horas. Quando a gente divide esse resultado por 24 (pois um dia tem 24 horas) convertemos pra dias.
Para as horas, vamos converter os segundos por horas novamente (segundo/3600) e coletar o resto da divisão por 24, ou seja, se dividir os segundos por 3600 e depois por 24 e obter 4 significa 4 dias, e daí pegar o que sobrou desses 4 dias, por exemplo, 12, seriam 4 dias e 12 horas.
E é só usar o mesmo raciocínio lógico para os minutos e segundos:
- Código:
int seconds = 475783; // Os segundos que quer converter
int days = ((seconds/3600) / 24);
int hours = (seconds/3600) % 24;
int minutes = (seconds%3600)/60;
int second = (seconds%3600)%60;
Debug.Log("{0}d {1}h:{2}m:{3}s",
days, hours, minutes, second);
O Output será: 5d 12h:9m:43s
Lembrando que ali na variável "seconds" você coloca o valor em segundos que quer converter para dias, horas e minutos.
Re: Mostrar tempo na tela no formato Dia Hora Segundos
Flávio escreveu:boa noite,
não sei se existe alguma função da unity que faz isso, mas eu queria fazer uma contagem de tempo regressiva de 3 dias, mas ao invés de mostrar na tela 4320 segundos, queria mostrar no formato por exemplo 1d 4h 25s, ou alguma coisa parecida com isso.
a contagem regressiva eu já fiz e funciona como eu quero, agora é só mostrar o tempo dessa forma.
É possível fazer isso?
Você pode usar o "TimeSpan" para fazer isso:
Primeiro, vc tem que importar a biblioteca System para seu script:
- Código:
using System;
Depois vc cria um variável local do tipo TimeSpan, e depois assina sua variável convertendo o TimeSpan:
- Código:
public class ConverterParaTempo : MonoBehaviour
{
//Converter seu número para uma String no formato de Tempo
public string NumeroParaTempoEmString(int NumeroParaConverter)
{
//Variável Local (Transforma o "NumeroParaConverter" em unidade de tempo)
TimeSpan VariavelLocal = TimeSpan.FromSeconds(NumeroParaConverter);
//Converte a Variável Local para String
return VariavelLocal.ToString("dd.hh.mm.ss");
}
void ExemploDeAplicação()
{
string Tempo = NumeroParaTempoEmString(300); //Resulta: "00.00.05.00"
}
}
Re: Mostrar tempo na tela no formato Dia Hora Segundos
Meu script ficou dessa forma:
a variavel numeroDias e deixei em float porque aí basta passar um valor de dias em decimal para a contagem acabar mais rápido em alguns minutos ou segundos só para ver como funciona.
e aí ficou tudo do jeito que eu esperava.
AnderGames, com seu código eu ainda não consegui fazer esse formato de tempo, aí eu vou acrescentar mais coisas para ver como fica, se alguém quiser sugerir o que posso acrescentar posta p mim.
obrigado Mayleone e AnderGames
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TempoEmDias : MonoBehaviour {
public float numeroDias;
public float tempoBruto;
[Space(7)]
public int dia;
public int horas;
public int minutos;
public int segundos;
public Text txtDia;
public Text txtHora;
public Text txtMinuto;
public Text txtSegundo;
void Start() {
tempoBruto = numeroDias * 86400;
StartCoroutine(ContagemRegressiva());
}
void Update() {
dia = (int)tempoBruto / 86400;
horas = ((int)tempoBruto / 3600) % 24;
minutos = ((int)tempoBruto % 3600) / 60;
segundos = ((int)tempoBruto % 3600) % 60;
txtDia.text = dia.ToString() + "d";
txtHora.text = horas.ToString() + "h";
txtMinuto.text = minutos.ToString() + "m";
txtSegundo.text = segundos.ToString() + "s";
}
IEnumerator ContagemRegressiva() {
yield return new WaitForSeconds(1.0f);
tempoBruto--;
if (tempoBruto > -1) {
StartCoroutine(ContagemRegressiva());
}
else {
tempoBruto = 0;
yield break;
}
}
}
a variavel numeroDias e deixei em float porque aí basta passar um valor de dias em decimal para a contagem acabar mais rápido em alguns minutos ou segundos só para ver como funciona.
e aí ficou tudo do jeito que eu esperava.
AnderGames, com seu código eu ainda não consegui fazer esse formato de tempo, aí eu vou acrescentar mais coisas para ver como fica, se alguém quiser sugerir o que posso acrescentar posta p mim.
obrigado Mayleone e AnderGames
Flávio- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Exibir um texto na tela por um tempo
» [TUTORIAL] Mostrar Data e Hora atual do Computador em um texto
» Como eu faço pra quando o tempo chegar em 14 segundos ele fazer algo
» [TUTORIAL] Fazer uma textura ocupar o maximo da tela sem sair do seu formato original
» [RESOLVIDO] Como mostrar um valor em forma de texto na tela?
» [TUTORIAL] Mostrar Data e Hora atual do Computador em um texto
» Como eu faço pra quando o tempo chegar em 14 segundos ele fazer algo
» [TUTORIAL] Fazer uma textura ocupar o maximo da tela sem sair do seu formato original
» [RESOLVIDO] Como mostrar um valor em forma de texto na tela?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos