Ir ao conteúdo
  • Cadastre-se
Matheus Lopes de Carvalho

Como comparar 3 valores em c#

Recommended Posts

Eae galera tudo bem :D

to com um probleminha aqui,

preciso comparar 3 valores em uma if

estou tentando fazer algo assim:

if (calculaHora > 86400 < 172800)

exemplo:

calculaHora deve ser maior que 86400 e 86400 não pode ser maior que 172800 entendem?

 

só que dessa maneira da um erro que não consigo resolver...

uma solução para esse caso?

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia,

///~calculaHora deve ser maior que 86400 e 86400 não pode ser maior que 172800 entendem
if( calculaHora > 86400 && 172800 > calculaHora ) {
	... //~Código, tarefas etc.	 
 }

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, Mauro Britivaldo disse:

Bom Dia,


///~calculaHora deve ser maior que 86400 e 86400 não pode ser maior que 172800 entendem
if( calculaHora > 86400 && 172800 > calculaHora ) {
	... //~Código, tarefas etc.	 
 }

 

Não funcionou, não sei se estou fazendo algo errado mas o código é o seguinte

                        if (calculaHora < 86400)
                        {
                        hora = dtDateTime.ToString("HH:mm");
                        }
                        else if (calculaHora > 86400 && 172800 > calculaHora)
                        {
                        hora = "Ontem, " + dtDateTime.ToString("HH:mm");
                        }
                        else
                        { hora = dtDateTime.ToString("dd/MM/yy, H:mm:ss"); }

no primeiro if, se o valor for menor que 86400 exibe "hora:minuto"

no segundo if se o valor for maior que 86400 e menor que 172800 exibe: "Ontem, hora:minuto"

caso não for nenhum das alternativas então exibe: dia/mes/ano hora:minuto:segundo

 

esses valores são em segundos 86400 = 24 horas, 172800 = 48 horas

 

o que ta acontecendo e que ele não exibe a data de ontem, exibe como se tivesse sido enviada hoje.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me de um exemplo de valor para calculaHora?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(double.Parse(song.Value["timestamp"].ToString())).ToLocalTime();
Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
int calculaHora;
calculaHora = (int.Parse(unixTimestamp.ToString()) - int.Parse(song.Value["timestamp"].ToString()));
string hora;

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é com relação a avaliação do 2º IF, observe as condições que declarei abaixo, e faça os teste apenas nelas

Assim mesmo fora de contexto, porque dentro do contexto fica um pouco mais complicado.

 

	unsigned int calculaHora = 86401;
	
	//~ Exemplo #1
	if (calculaHora > 86400 && 172800 > calculaHora)
		printf( "#1 Esta tudo Ok!\n" );
	
	//~ Exemplo #2	
	calculaHora = 172799;
	if (calculaHora > 86400 && 172800 > calculaHora)
		printf( "#2 Esta tudo Ok!\n" );
		
	//~ Exemplo #3	
	calculaHora = 172800;
	if (calculaHora > 86400 && 172800 > calculaHora)
		printf( "#3 Esta tudo Ok!\n" ); else
		printf( "#3 Fora do intervaldo que vai de 86401 a 172799\nSorry!\n\n" );

 

adicionado 5 minutos depois

existe situações lógicas em que precisamos incluir os estremos da reta, então para estes casos usamos >= ou <=

Acredito que este seja o caso?

adicionado 5 minutos depois

>= maior e Igual

<= menor e Igual

Editado por Mauro Britivaldo
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu método estava certo, eu que não estava pensando direito, no caso 'ontem' seria assim que a hora passasse das 00:00

 

mas no meu código estava calculando a hora do envio da msg, exemplo: a msg foi enviada as 23:50, no meu código pegaria a data/hora atual e subtrai pelo data/hora do envio então não daria 24h em segundos. então por isso exibia como se tivesse sido enviada hoje.

 

preciso arrumar uma solução para isso, mas de qualquer maneira muito obrigado pela ajuda Mauro :)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×