Calculating Daylight hours by latitude is essential for properly sizing a battery box and solar panel. There are several other factors that play significant roles in calculating power needed, however, it was difficult to find a simple formula for calculating daylight hours by latitude. The c# code is provided by SCADACore.

Here are several wikipedia pages available (, an additional page linked by wikipedia provides in depth calculations (

A formula provided by a user of provides the simplest formula for calculating day length (

 D = daylength
L = latitude
J = day of the year
   P = asin[.39795*cos(.2163108 + 2*atan{.9671396*tan[.00860(J-186)]})]
                         / sin(0.8333*pi/180) + sin(L*pi/180)*sin(P) \
   D = 24 - (24/pi)*acos{  -----------------------------------------  }
                         \_          cos(L*pi/180)*cos(P)           _/

The corresponding C# code is as follows:

public double CalculateHoursOfSunlightInDay(double latitude, int day)
double P = Math.Asin(.39795 * Math.Cos(.2163108 + 2 * Math.Atan(.9671396 * (Math.Tan(0.00860 * (day – 186))))));

double numerator = Math.Sin(0.8333 * Math.PI / 180) + Math.Sin(latitude * Math.PI / 180) * Math.Sin(P);
double denominator = Math.Cos(latitude * Math.PI / 180) * Math.Cos(P);

double hoursInDay = 24;

double dayLength = 24 – ((hoursInDay / Math.PI) * Math.Acos(numerator / denominator));

return dayLength;

With this calculation users can retrieve the data number of hours for a specific latitude.

SCADACore provides the Solar Panel Sizing field application to help field users properly size their SCADA solar battery boxes for specific climates. The following calculator from is useful in determining the number of daylight hours based on your location.

Please Install Flash To View This Application.
See Our Solar Power Monitoring Solutions