Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

0cool

Estação do Ano atual

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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é.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.