日落日出
来源:互联网 发布:工业自动化控制软件 编辑:程序博客网 时间:2024/04/28 17:54
验证网站
http://richurimo.51240.com/
例如:
http://richurimo.51240.com/31.331292_121.04319133333333__richuriluo/
package com.xxxxx.remind.util;import java.util.Calendar;public class SunRiseSet {private static int[] days_of_month_1 = { 31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31 };private static int[] days_of_month_2 = { 31, 29, 31, 30, 31, 30, 31, 31,30, 31, 30, 31 };private final static double h = -0.833;// 日出日落时太阳的位置private final static double UTo = 180.0;// 上次计算的日落日出时间,初始迭代值180.0// 输入日期// 输入经纬度// 判断是否为闰年:若为闰年,返回1;若不是闰年,返回0public static boolean leap_year(int year) {if (((year % 400 == 0) || (year % 100 != 0) && (year % 4 == 0)))return true;elsereturn false;}// 求从格林威治时间公元2000年1月1日到计算日天数dayspublic static int days(int year, int month, int date) {int i, a = 0;for (i = 2000; i < year; i++) {if (leap_year(i))a = a + 366;elsea = a + 365;}if (leap_year(year)) {for (i = 0; i < month - 1; i++) {a = a + days_of_month_2[i];}} else {for (i = 0; i < month - 1; i++) {a = a + days_of_month_1[i];}}a = a + date;return a;}// 求格林威治时间公元2000年1月1日到计算日的世纪数tpublic static double t_century(int days, double UTo) {return ((double) days + UTo / 360) / 36525;}// 求太阳的平黄径public static double L_sun(double t_century) {return (280.460 + 36000.770 * t_century);}// 求太阳的平近点角public static double G_sun(double t_century) {return (357.528 + 35999.050 * t_century);}// 求黄道经度public static double ecliptic_longitude(double L_sun, double G_sun) {return (L_sun + 1.915 * Math.sin(G_sun * Math.PI / 180) + 0.02 * Math.sin(2 * G_sun * Math.PI / 180));}// 求地球倾角public static double earth_tilt(double t_century) {return (23.4393 - 0.0130 * t_century);}// 求太阳偏差public static double sun_deviation(double earth_tilt,double ecliptic_longitude) {return (180 / Math.PI * Math.asin(Math.sin(Math.PI / 180 * earth_tilt)* Math.sin(Math.PI / 180 * ecliptic_longitude)));}// 求格林威治时间的太阳时间角GHApublic static double GHA(double UTo, double G_sun, double ecliptic_longitude) {return (UTo - 180 - 1.915 * Math.sin(G_sun * Math.PI / 180) - 0.02* Math.sin(2 * G_sun * Math.PI / 180) + 2.466* Math.sin(2 * ecliptic_longitude * Math.PI / 180) - 0.053 * Math.sin(4 * ecliptic_longitude * Math.PI / 180));}// 求修正值epublic static double e(double h, double glat, double sun_deviation) {return 180/ Math.PI* Math.acos((Math.sin(h * Math.PI / 180) - Math.sin(glat* Math.PI / 180)* Math.sin(sun_deviation * Math.PI / 180))/ (Math.cos(glat * Math.PI / 180) * Math.cos(sun_deviation * Math.PI / 180)));}// 求日出时间public static double UT_rise(double UTo, double GHA, double glong, double e) {return (UTo - (GHA + glong + e));}// 求日落时间public static double UT_set(double UTo, double GHA, double glong, double e) {return (UTo - (GHA + glong - e));}// 判断并返回结果(日出)public static double result_rise(double UT, double UTo, double glong,double glat, int year, int month, int date) {double d;if (UT >= UTo)d = UT - UTo;elsed = UTo - UT;if (d >= 0.1) {UTo = UT;UT = UT_rise(UTo,GHA(UTo,G_sun(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo))))));result_rise(UT, UTo, glong, glat, year, month, date);}return UT;}// 判断并返回结果(日落)public static double result_set(double UT, double UTo, double glong,double glat, int year, int month, int date) {double d;if (UT >= UTo)d = UT - UTo;elsed = UTo - UT;if (d >= 0.1) {UTo = UT;UT = UT_set(UTo,GHA(UTo,G_sun(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo))))));result_set(UT, UTo, glong, glat, year, month, date);}return UT;}// 求时区public static int Zone(double glong) {if (glong >= 0)return (int) ((int) (glong / 15.0) + 1);elsereturn (int) ((int) (glong / 15.0) - 1);}public static int[] getSunrise(double mLat,double mLong) {double sunrise, glong, glat;int year, month, date;Calendar today = Calendar.getInstance(); year = today.get(Calendar.YEAR); month = today.get(Calendar.MONTH) + 1; date = today.get(Calendar.DAY_OF_MONTH);glong = mLong;glat = mLat;sunrise = result_rise(UT_rise(UTo,GHA(UTo,G_sun(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date), UTo)),G_sun(t_century(days(year, month, date), UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo)))))), UTo, glong,glat, year, month, date);// System.out.println("Sunrise is: "+(int)(sunrise/15+Zone(glong))+":"+(int)(60*(sunrise/15+Zone(glong)-(int)(sunrise/15+Zone(glong))))+" .\n");//System.out.println( "Sunrise is: " + (int) (sunrise / 15 + 8) + ":"//+ (int) (60 * (sunrise / 15 + 8 - (int) (sunrise / 15 + 8)))//+ " .\n");// return// "Sunrise is: "+(int)(sunrise/15+Zone(glong))+":"+(int)(60*(sunrise/15+Zone(glong)-(int)(sunrise/15+Zone(glong))))+" .\n";int[] set_time= new int[2];set_time[0] = (int) (sunrise / 15 + 8);set_time[1] = (int) (60 * (sunrise / 15 + 8 - (int) (sunrise / 15 + 8)));return set_time;//return "" + (int) (sunrise / 15 + 8) + ":"//+ (int) (60 * (sunrise / 15 + 8 - (int) (sunrise / 15 + 8)))//+ "";}public static int[] getSunset(double mLat,double mLong) {double sunset, glong, glat;int year, month, date;Calendar today = Calendar.getInstance(); year = today.get(Calendar.YEAR); month = today.get(Calendar.MONTH) + 1; date = today.get(Calendar.DAY_OF_MONTH);glong = mLong;glat = mLat;sunset = result_set(UT_set(UTo,GHA(UTo,G_sun(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date), UTo)),G_sun(t_century(days(year, month, date), UTo)))),glong,e(h,glat,sun_deviation(earth_tilt(t_century(days(year, month, date), UTo)),ecliptic_longitude(L_sun(t_century(days(year, month, date),UTo)),G_sun(t_century(days(year, month, date),UTo)))))), UTo, glong,glat, year, month, date);// System.out.println("The time at which the sunset is: "+(int)(sunset/15+Zone(glong))+":"+(int)(60*(sunset/15+Zone(glong)-(int)(sunset/15+Zone(glong))))+" .\n");//System.out.println("Sunset is: " + (int) (sunset / 15 + 8) + ":"//+ (int) (60 * (sunset / 15 + 8 - (int) (sunset / 15 + 8)))//+ " .\n");// return// "Sunset is: "+(int)(sunset/15+Zone(glong))+":"+(int)(60*(sunset/15+Zone(glong)-(int)(sunset/15+Zone(glong))))+" .\n";int[] set_time= new int[2];set_time[0] = (int) (sunset / 15 + 8);set_time[1] = (int) (60 * (sunset / 15 + 8 - (int) (sunset / 15 + 8)));return set_time;//return "" + (int) (sunset / 15 + 8) + ":"//+ (int) (60 * (sunset / 15 + 8 - (int) (sunset / 15 + 8)))//+ "";}public static void main(String[] args) {//上海市//double lat = 31.331292;//double lon = 121.04319133333333;//北京市//double lat = 39.9;//double lon = 116.4;//海口市//double lat = 20.03;//double lon = 110.32;//哈尔滨市//double lat = 45.8;//double lon = 126.53;//重庆市//double lat = 29.57;//double lon = 106.55;//呼和浩特市//double lat = 40.83;//double lon = 111.73;//拉萨市//double lat = 29.65;//double lon = 91.13;//乌鲁木齐市//double lat = 43.82;//double lon = 87.62;//西宁市//double lat = 36.62;//double lon = 101.78;//昆明市//double lat = 25.05;//double lon = 102.72;//郑州市//double lat = 34.75;//double lon = 113.62;//成都市//double lat = 30.67;//double lon = 104.07;//System.out.println("Sunrise=" + SunRiseSet.getSunrise(lat, lon)[0] + " , " + SunRiseSet.getSunrise(lat, lon)[1]);//System.out.println("getSunset=" + SunRiseSet.getSunset(lat, lon)[0] + " , " + SunRiseSet.getSunset(lat, lon)[1]);}}
0 0
- 日落日出
- 日出日落时间计算器
- 日落日出动画效果
- 自定义日出日落曲线动画
- 仿天气日出日落效果
- 天气预报 获取日出日落的代码
- 计算日落日出时间算法与代码
- 计算日落日出时间算法与代码
- 仿MIUI日出日落动画实现
- 计算日落日出时间算法与代码
- android 画日出日落圆弧曲线
- 健身时间 日出后日落前宜做活动
- 地平线上,看这日出日落、潮起潮落
- unity 24小时日出日落光照效果参考
- 自定义View之实现日出日落太阳动效
- 日落
- 如何根据纬度,经度和日期判断太阳的日出和日落的时间
- Eclipse重构——写在今日日落,期待明日日出
- Python 视频学习 21-24 switch 内建函数
- zoj1283(LIS)
- 4399
- 想开发移动应用程序?请注意这些隐私和安全
- sql中的group by 和 having 用法解析
- 日落日出
- 读书
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料转给自己看
- 母牛的故事
- 变更密码和移除恶意软件并不足以化解APT攻击
- 花生壳产品总监:NAT-DDNS技术是给老用户的交代
- android开源项目
- 详解手机第二分区EXT2、EXT3、EXT4区别(简洁)?
- Oracle归档日志