Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

Estação do Ano atual

  • Por favor, faça o login para responder
9 respostas neste tópico

#1 0cool

0cool
  • Banidos
  • 0 posts

Postado 11 maio 2011 - 05:10

Pessoal, estou tentando fazer um script que mostre a estação do ano atual no wikipedia diz o seguinte

Dia 21 de dezembro - Início do verão
Dia 21 de março - Início do outono
Dia 21 de junho - Início do inverno
Dia 21 de setembro - Início da primavera


Sendo assim

Verão - começa 21/12 termina 21/03
Outono - começa 21/03 termina 21/06
Inverno - começa 21/06 termina 21/09
Primavera - começa 21/09 termina 21/12

Desta forma estou tenando montar um uma função em asp que mostre a estação do ano de acordo com a data especificada, montei o seguinte...

Function Estacao(vData)
	d = day(vData)
	m = month(vData)
	if d>21 and m=12 or d<21 and m=03 then Estacao = "Verão"
	if d>21 and m=03 or d<21 and m=06 then Estacao = "Outono"
	if d>21 and m=06 or d<21 and m=09 then Estacao = "Inverno"
	if d>21 and m=09 or d<21 and m=12 then Estacao = "Primavera"
	Response.Write Estacao
End function

E chamo da seguinte maneira

<% Estacao(date()) %>

Massssss não ta indo, não exibe nenhum valor, tenho certeza que o erro esta na montagem, porém não to encontrando aonde estou falhando.

Se alguém puder me da um help!

Valew.

#2 Vinicius Ianni

Vinicius Ianni

    Vinicius Ianni

  • Moderadores Globais
  • 2.698 posts

Postado 11 maio 2011 - 10:34

Mudei algumas coisinhas, e agora exibe alguma coisa:
Function Estacao()
        d = day(vData)
        m = month(vData)
        if d>21 and m=12 or d<21 and m=03 then 
        Estacao = "Verão"
        end if
        if d>21 and m=03 or d<21 and m=06 then 
        Estacao = "Outono"
        end if
        if d>21 and m=06 or d<21 and m=09 then 
        Estacao = "Inverno"
        end if
        if d>21 and m=09 or d<21 and m=12 then 
        Estacao = "Primavera"
        end if
End function
Response.write Date() &"<br>"
Response.Write Estacao

Mas só exibe verão, algo na comparação está falhando, testei aqui algumas possibilidades, mas falhei na lógica.
  • 0

#3 0cool

0cool
  • Banidos
  • 0 posts

Postado 11 maio 2011 - 11:53

Pois é, tb não to conseguindo fazer isso rsrsrs pela lógica era pra funcionar, mas não ta.

Se alguém souber o que pode esta errado eu agradeço.

#4 xanburzum

xanburzum
  • Membros
  • 11.545 posts

Postado 11 maio 2011 - 12:46

eu tenho uma parecida por aqui, utilizando SELECT CASE, encontrando posto aqui.
  • 0

#5 0cool

0cool
  • Banidos
  • 0 posts

Postado 12 maio 2011 - 17:23

Fui obrigado a criar alguns ifs a mais rsrsrs mas agora ta indo

Function Estacao(vData)

	d = day(vData)
	m = month(vData)
	
	'verão
	if d>=01 and m=01 or d=<31 and m=01 then estacao = "Verão"
	if d>=01 and m=02 or d=<31 and m=02 then estacao = "Verão"
	if d>=01 and m=03 or d=<21 and m=03 then estacao = "Verão"
	if d>=21 and m=12 or d=<31 and m=12 then estacao = "Verão"
	
	'outono
	if d>=22 and m=03 or d=<31 and m=03 then estacao = "Outono"
	if d>=01 and m=04 or d=<31 and m=04 then estacao = "Outono"
	if d>=01 and m=05 or d=<31 and m=05 then estacao = "Outono"
	if d>=01 and m=06 or d=<21 and m=06 then estacao = "Outono"
	
	'inverno
	if d>=22 and m=06 or d=<31 and m=06 then estacao = "Inverno"
	if d>=01 and m=07 or d=<31 and m=07 then estacao = "Inverno"
	if d>=01 and m=08 or d=<31 and m=08 then estacao = "Inverno"
	if d>=01 and m=09 or d=<21 and m=09 then estacao = "Inverno"
	
	'primavera
	if d>=22 and m=09 or d=<31 and m=09 then estacao = "Primavera"
	if d>=01 and m=10 or d=<31 and m=10 then estacao = "Primavera"
	if d>=01 and m=11 or d=<31 and m=11 then estacao = "Primavera"
	if d>=01 and m=12 or d=<21 and m=12 then estacao = "Primavera"

	Response.Write estacao

End function

Para Chamar...

<% Function Estacao(date()) %>

flw.

#6 Vinicius Ianni

Vinicius Ianni

    Vinicius Ianni

  • Moderadores Globais
  • 2.698 posts

Postado 12 maio 2011 - 21:06

Ficou bem mais longo do que imaginei, vou testar depois ;)
  • 0

#7 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.442 posts

Postado 13 maio 2011 - 11:46

Ficou enorme mesmo

Usando CASE certamente ficaria melhor até em desempenho mas ainda assim ficaria longo

Creio que de para usar funções de data mesmo para verificar intervalos depois se der farei uns testei
  • 0

#8 0cool

0cool
  • Banidos
  • 0 posts

Postado 13 maio 2011 - 11:52

Consegui diminuir

Function Estacao(vData)

        d = day(vData)
        m = month(vData)
        
        if d>=01 and m=01 or d=<21 and m=03 then estacao = "Verão"
        if d>=22 and m=03 or d=<21 and m=06 then estacao = "Outono"
        if d>=22 and m=06 or d=<21 and m=09 then estacao = "Inverno"
        if d>=22 and m=09 or d=<21 and m=12 then estacao = "Primavera"
	if d>=21 and m=12 or d=<31 and m=12 then estacao = "Verão"

        Response.Write estacao

End function

Em relação ao select case, sei não, não posso afirmar pois não o uso muito, porém não acredito que com ele pudesse ficar menor não, mais fico no aguardo.

Até.

#9 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.442 posts

Postado 13 maio 2011 - 15:35

em relação ao numero de linhas mesmo sendo um pouco maior o case daria mais desempenho pois já vai para o trecho correto enquanto que com ifs tudo é testado
  • 0

#10 0cool

0cool
  • Banidos
  • 0 posts

Postado 13 maio 2011 - 17:32

Pode ser que sim, mas não to entendendo como isso poderia ser feito pelo case, mas fico no aguardo caso alguém que entenda de case possa fazer um exemplo simples, to procurando na net a respeito do uso do case, mais não conseguindo encontrar uma lógica para aplicar nesse caso.




Publicidade

/ins>