PHP allows me to quickly check the sunrise and sunset times for any day at a specific Latitude & Longitude.
Is there a simple way to calculate which day is the Solstice? By which I mean - at my specific location, which day has the most hours of sunlight and which has the least?
I wouldn't call it "simple", but I thought about calculating the time differences between the sunrise and sunset in each day, then storing this data in an array, and finally finding the min/max value. Iv'e made something really quick, hope it would be useful:
(I used random long/lat)
function solstice() {
// Set timezone
date_default_timezone_set('UTC');
$date='2014/01/01';
$end_date='2014/12/31';
$i = 0;
//loop through the year
while(strtotime($date)<=strtotime($end_date)) {
$sunrise=date_sunrise(strtotime($date),SUNFUNCS_RET_DOUBLE,31.47,35.13,90,3);
$sunset=date_sunset(strtotime($date),SUNFUNCS_RET_DOUBLE,31.47,35.13,90,3);
//calculate time difference
$delta = $sunset-$sunrise;
//store the time difference
$delta_array[$i] = $delta;
//store the date
$dates_array[$i] = $date;
$i++;
//next day
$date=date("Y-m-d",strtotime("+1 day",strtotime($date)));
}
$shortest_key = array_search(min($delta_array), $delta_array);
$longest_key = array_search(max($delta_array), $delta_array);
echo "The longest day is:".$dates_array[$longest_key]. "<br />";
echo "The shortest day is:".$dates_array[$shortest_key]. "<br />";
}