答案 0 :(得分:3)
我不会称之为“简单”,但我想到计算每天日出和日落之间的时差,然后将这些数据存储在一个数组中,最后找到最小值/最大值。 我做了很快的事情,希望它会有用:
(我使用随机长/拉)
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 />";
}