这个现象是均时差引起的。
http://baike.baidu.com/view/1718143.htm
均时差可以理解为每天太阳到达正南的时间和地方时之差。均时差每天都在变化。
举个例子,夏至附近,由于均时差的变化,太阳到达正南的时间每天要延迟一些。也就是说,如果白昼长度不变的话,那每天的日出要推迟,日落也要推迟。夏至之后的一段时间,白昼时长在减少,这造成了日出推迟,日落提早。但刚过夏至的那几天,白昼时长增加的不多,不如上面均时差变化大,所以总的效应是日出在推迟,日落也在推迟,直到20天后,白昼时长增加造成的日落提早才抵掉了均时差造成的日落推迟,这时,总的效应表现为日出推迟,日落提早。也就是说,夏至过了20天后,日落时间才达到最晚。夏至之前同样的道理。
这个链接里也有详细说明http://www.astronomy.com.cn/bbs/thread-87031-1-1.html
日出日落的时刻:夏半年时,6点前日出,18点后日落;冬半年时,6点后日出,18点前日落。春秋二分,6点日出,18点日落。日出日落的方位:除极昼、极夜外,当太阳直射在北半球时,各地日出东北,日落西北。当太阳直射点在南南半球是,各地日出东南,日落西南。春秋二分,东升西落。
日出时间=12-昼长;日落时间=12+昼长。相反,根据某地某一天日出日落时间可计算昼长、夜长,其方法为:某地昼长=日落时间-日出时间=(正午12点-日出时间)×2=(日落时间-正午12点)×2。某地夜长=(子夜24点-日落时间)×2=(日出时间-子夜0点)×2。