Hello I a very new to Javascript and I need to make a code that allows someone to enter a date and it will result in the season that date is in. I am at a loss at what I should do, an if else statement? This is as far as I got, thank you for everyone's time!
<body>
<h1>Date to Season</h1>
<p align="left">Enter Date:
<input id="season" maxlength="4" size="24"/>
</p>
<input type="button" value="Submit" onclick="Submit()"/><br/>
<textarea cols="40" rows="3" id="output"></textarea></body>
<script type="text/javascript">
function Submit(){
var date = document.getElementById('season').value;
var seasons =
if (
No doubt calculating solstices and equinoxes is not what you had in mind, but they are not too difficult.
Contrary to what some have said, solstices and equinoxes do not depend on where you are, though their names do- winter is called summer by somebody on half the globe.
Date.fromJulian= function(j){
j= (+j)+(30.0/(24*60*60));
var A= Date.julianArray(j, true);
return new Date(Date.UTC.apply(Date, A));
}
Date.julianArray= function(j, n){
var F= Math.floor;
var j2, JA, a, b, c, d, e, f, g, h, z;
j+= .5;
j2= (j-F(j))*86400.0;
z= F(j);
f= j-z;
if(z< 2299161) a= z;
else{
g= F((z-1867216.25)/36524.25);
a= z+1+g-F(g/4);
}
b= a+1524;
c= F((b-122.1)/365.25);
d= F(365.25*c);
e= F((b-d)/30.6001);
h= F((e< 14)? (e-1): (e-13));
var JA= [F((h> 2)? (c-4716): (c-4715)),
h-1, F(b-d-F(30.6001*e)+f)];
var JB= [F(j2/3600), F((j2/60)%60), Math.round(j2%60)];
JA= JA.concat(JB);
if(typeof n== 'number') return JA.slice(0, n);
return JA;
}
Date.getSeasons= function(y, wch){
y= y || new Date().getFullYear();
if(y<1000 || y> 3000) throw y+' is out of range';
var Y1= (y-2000)/1000, Y2= Y1*Y1, Y3= Y2*Y1, Y4= Y3*Y1;
var jd, t, w, d, est= 0, i= 0, Cos= Math.degCos, A= [y],
e1= [485, 203, 199, 182, 156, 136, 77, 74, 70, 58, 52, 50, 45, 44, 29, 18, 17, 16, 14, 12, 12, 12, 9, 8],
e2= [324.96, 337.23, 342.08, 27.85, 73.14, 171.52, 222.54, 296.72, 243.58, 119.81, 297.17, 21.02,
247.54, 325.15, 60.93, 155.12, 288.79, 198.04, 199.76, 95.39, 287.11, 320.81, 227.73, 15.45],
e3= [1934.136, 32964.467, 20.186, 445267.112, 45036.886, 22518.443,
65928.934, 3034.906, 9037.513, 33718.147, 150.678, 2281.226,
29929.562, 31555.956, 4443.417, 67555.328, 4562.452, 62894.029,
31436.921, 14577.848, 31931.756, 34777.259, 1222.114, 16859.074];
while(i< 4){
switch(i){
case 0: jd= 2451623.80984 + 365242.37404*Y1 + 0.05169*Y2 - 0.00411*Y3 - 0.00057*Y4;
break;
case 1: jd= 2451716.56767 + 365241.62603*Y1 + 0.00325*Y2+ 0.00888*Y3 - 0.00030*Y4;
break;
case 2: jd= 2451810.21715 + 365242.01767*Y1 - 0.11575*Y2 + 0.00337*Y3 + 0.00078*Y4;
break;
case 3: jd= 2451900.05952 + 365242.74049*Y1 - 0.06223*Y2 - 0.00823*Y3 + 0.00032*Y4;
break;
}
var t= (jd- 2451545.0)/36525,
w= 35999.373*t - 2.47,
d= 1 + 0.0334*Cos(w)+ 0.0007*Cos(2*w);
est= 0;
for(var n= 0; n<24; n++){
est += e1[n]*Cos(e2[n]+(e3[n]*t));
}
jd+= (0.00001*est)/d;
A[++i]= Date.fromJulian(jd);
}
return wch && A[wch]? A[wch]: A;
}
Math.degRad= function(d){
return (d*Math.PI)/180.0
}
Math.degSin= function(d){
return Math.sin(Math.degRad(d))
}
Math.degCos= function(d){
return Math.cos(Math.degRad(d))
}
Here's a one-liner.
const getSeason = d => Math.floor((d.getMonth() / 12 * 4)) % 4
console.log('Southern hemisphere (Summer as Dec/Jan/Feb etc...):')
console.log(['Summer', 'Autumn', 'Winter', 'Spring'][getSeason(new Date())])
console.log('Northern hemisphere (Winter as Dec/Jan/Feb etc...):')
console.log(['Winter', 'Spring', 'Summer', 'Autumn'][getSeason(new Date())])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With