C 可用的日出日落時間類

2021-09-08 12:05:47 字數 3077 閱讀 2882

乙個現成**的公共類庫,複製下來作為乙個類檔案就可以呼叫了。一般不需要了解實現過程,各種數學公式太麻煩。

呼叫方法:

suntimeresult result = suntimes.getsuntime(datetime.now, double.parse(longitude), double.parse(latitude));

datetime.now是現在的時間
longitude是經度
latitude是緯度
類庫**如下:

using system;

namespace switchtime

/// /// 計算日出日沒時間

///

/// 日期

/// 經度

/// 緯度

/// 日落日出時間

/// /// 注:日期最小為2000.1.1號

///

public static suntimeresult getsuntime(datetime date, double longitude, double latitude)

#endregion

#region 私有方法

#region 時間轉換

private static datetime tolocaltime(datetime time, double uttime)

catch

}#endregion

#region 與日出日落時間相關計算

private static double daylen(int year, int month, int day, double lon, double lat,

double altit, int upper_limb)

private static void sunpos(double d, ref double lon, ref double r)

private static void sun_ra_dec(double d, ref double ra, ref double dec, ref double r)

/// /// 日出沒時刻計算

///

/// 年

/// 月

/// 日

///

///

///

///

/// 日出時刻

/// 日沒時刻

/// 太陽有出沒現象,返回0 極晝,返回+1 極夜,返回-1

private static int sunriset(int year, int month, int day, double lon, double lat,

double altit, int upper_limb, ref double trise, ref double tset)

else

else

t = acosd(cost) / 15.0; /* the diurnal arc, hours */

}/* store rise and set times - in hours ut */

trise = tsouth - t;

tset = tsouth + t;

return rc;

}#endregion

#region 輔助函式

/// /// 曆元2000.0,即以2023年第一天開端為計日起始(天文學以第一天為0日而非1日)。

/// 它與ut(就是世界時,格林尼治平均太陽時)2023年末重合。

///

///

///

///

///

private static long days_since_2000_jan_0(int y, int m, int d)

private static double revolution(double x)

private static double rev180(double x)

private static double gmst0(double d)

private static double inv360 = 1.0 / 360.0;

#endregion

#region 度與弧度轉換係數,為球面三角計算作準備

private static double sind(double x)

private static double cosd(double x)

private static double tand(double x)

private static double atand(double x)

private static double asind(double x)

private static double acosd(double x)

private static double atan2d(double y, double x)

private static double radge = 180.0 / math.pi;

private static double degrad = math.pi / 180.0;

#endregion

#endregion

}/// /// 日出日落時間結果

///

public class suntimeresult

#endregion

#region 屬性定義

/// /// 獲取日出時間

///

public datetime sunrisetime

}/// /// 獲取日落時間

///

public datetime sunsettime

}#endregion

#region 私成員

private datetime sunrisetime;//日出時間

private datetime sunsettime;//日落時間

#endregion

}}

怎麼判斷日出時間早晚 日出日落時間早晚比較知識講解

精品文件 精品文件 日出日落時間早晚比較 關於日出時間早晚的比較可以分為四類 在同一地點,海拔越高的地方越先看到日出 日落越晚。所以在飛機上看日出早,日落 晚。在同一緯度上的兩地,越東邊的地點越先看到日出 不考慮地形因素的影響 相同緯度 晝長相等,經度越東,日出越早,日落也早。在同一經度上的兩地,白...

PHP根據經緯度獲取日出日落時間資訊

date sun info timestamp,latitude,longitude 引數 描述timestamp 必需。規定時間戳。latitude 必需。規定緯度。longitude 必需。規定經度。返回值 如果成功則返回乙個陣列,如果失敗則返回 false。param float latitu...

C 時間類 時間的設定

資料成員包括 年月日小時分鐘秒 成員函式包括 年月日的設定,小時分鐘秒的設定,其中包括輸入錯誤的檢查,並提示重新的輸入 顯示函式,顯示格式按照標準格式,如2013 04 11 10 20 30 include includeusing namespace std class date class t...