日の出、日の入り

     ■住所で移動
    
     ■緯度・経度(10進)で移動
     緯度
     経度

    
    
    

    


    簡易計算値(標高は0mで計算)

     日の出

     日の入


     住所
    


日の出、日の入りの時刻を簡易計算するコード

多分、正値とは2分前後の誤差があると思います。

必要なパラメータは以下の値

年・月・日・緯度・経度

JavaScriptの場合

【年・月・日の取得】

var current_D = new Date();
var current_Year = current_D.getFullYear();
var current_Month = current_D.getMonth() + 1;
var current_Day = current_D.getDate();


【1月1日からの通し日数】

year1=current_Year;
month1=current_Month;
day1=current_Day;

year2=current_Year;
month2=1;
day2=1;
    
var dt1 = new Date(year1, month1 - 1, day1);
var dt2 = new Date(year2, month2 - 1, day2);
var diff = dt1 - dt2;
var Days = diff / 86400000;


【日の出・日の入りの時刻】

緯度・経度は適当な値を入れてください。

        
var Keido = ******;//経度
var ido = ******;//緯度

var IdoR= ido * Math.PI/180;

var Day1 = 2*Math.PI*(Days - 81.5)/365;

var Day2 = 2*Math.PI*(Days - 3)/365;

//均時差
var TimeEquation1 = -7.37*Math.sin(Day2);

var TimeEquation2 = 9.86*Math.sin(2*Day1);

var TimeEquation = TimeEquation1 + TimeEquation2;


//太陽の赤緯
var SunDeclination = 0.4082*Math.sin(Day1);

//昼間の時間
var Day_Time_min = 1440*(1-Math.acos(Math.tan(SunDeclination)*Math.tan(IdoR))/Math.PI);

//補正値
var Hosei_min = 0.8502*4/Math.sqrt(1-Math.sin(IdoR)*Math.sin(IdoR)/(Math.acos(SunDeclination)*Math.acos(SunDeclination)));

//南中
var Culmination_Time = 720 - TimeEquation + 4*(135-Keido);

//午前0時からの通し時間(分)
var Sunrise_min = Culmination_Time - Day_Time_min/2-Hosei_min;
var Sunset_min = Culmination_Time + Day_Time_min/2+Hosei_min;

//日の出の時刻
Sunrise_min = Math.ceil(Sunrise_min);
var Sunrise_ji = Math.floor(Sunrise_min / 60);
var Sunrise_hun = Sunrise_min - (Sunrise_ji*60);

//日の入りの時刻
Sunset_min = Math.ceil(Sunset_min);
var Sunset_ji = Math.floor(Sunset_min / 60);
var Sunset_hun = Sunset_min - (Sunset_ji*60);




Javaの場合(Android)

こちらのページに移動しました。

日の出、日の入り(Android版)




トップページ| サイトマップ| Presented By WisteriaHill