calculateTrueSolarTime static method
计算真太阳时
dateTime
- 需要计算的日期时间(本地时间)
longitude
- 观测点经度,单位为度(东经为正,西经为负)
timeZoneOffset
- 时区偏移(小时)
Implementation
static DateTime calculateTrueSolarTime(
DateTime dateTime,
double longitude,
double timeZoneOffset,
) {
// 计算年中的天数(从0开始)
int dayOfYear = _calculateDayOfYear(dateTime);
// 计算时差方程(分钟)
double eot = _calculateEquationOfTime(dayOfYear);
// 经度修正(分钟) - 每经度4分钟
double longitudeCorrection = 4 * (longitude - (timeZoneOffset * 15));
// 总时间修正(分钟)
double totalCorrection = eot + longitudeCorrection;
// 将分钟转换为毫秒
int correctionMs = (totalCorrection * 60 * 1000).round();
// 应用修正得到真太阳时
return dateTime.add(Duration(milliseconds: correctionMs));
}