Hazlo más simple y piensa un poco en todo el follón que tienes. Fíjate en el primer if, hay un trozo que pone
(mes==4 && d>=1 && mes==4 && d>=30)
suponiendo mes 4, tiene que ser mayor que 1 y mayor que 30. Sobre el primero ¿no?
Fija las cuatro fechas (mes/dia) de cambio de estacion en algun sitio y el if debe ser muy tonto si empiezas por el principio de año
if ( diaActual < fechaInicioPrimavera ) ---> es invierno
else if ( diaActual < fechaInicioVerano ) ---> es primavera
....
Se bueno.