Сорри, что поднимаю старую тему.
Где-то с месяц назад написал код, определяющий время восхода и заката для заданной широты (может не работать для полярной ночи/дня).
Погрешность около 10 минут.
Использовал
http://en.wikipedia.org/wiki/sunrise_equation

Код:
var LAT:Number = 42; // широта местности
function toRad(x:Number) {
return x*Math.PI/180;
}
function toDeg(x:Number) {
return x*180/Math.PI;
}
function getMin(t:Number) {
return Math.floor((t-Math.floor(t))*60);
}
var T:Date = new Date();
var startOfYear:Date = new Date(T.getYear()+1900, 0, 1);
var doy:Number = Math.floor((T-startOfYear)/86400000)+1;
var decl:Number = -23.45*Math.cos(toRad((doy+10)*360/365))
var st:Number = toDeg(Math.acos(-Math.tan(toRad(LAT))*Math.tan(toRad(decl))))/15+0.1;
var stSunrise = 13.25-st;
var stSunset = 13.25+st;
trace(Math.floor(stSunrise)+":"+getMin(stSunrise));
trace(Math.floor(stSunset)+":"+getMin(stSunset));