用PHP计算Summer / Winter Solstice?

时间:2014-06-01 09:29:40

标签: php datetime time astronomy

PHP允许我快速查看特定纬度和价位的任何一天的sunrisesunset次。经度。

有没有一种简单的方法来计算哪一天是至日?我的意思是 - 在我的特定位置,哪一天有最多的阳光时间,哪一天最少?

1 个答案:

答案 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 />";
}