3 Commits

Author SHA1 Message Date
b612 dadbba7171 improve:月升月落算法优化 2026-02-17 23:23:52 +08:00
b612 add07bbd85 add deltaT func to astro.go 2026-02-16 13:20:22 +08:00
b612 27b7e4ab77 年号异体字修正 2025-11-02 12:01:04 +08:00
5 changed files with 71 additions and 56 deletions
+14
View File
@@ -1,2 +1,16 @@
// Package astro // Package astro
package astro package astro
import "b612.me/astro/basic"
func DeltaT() func(float64, bool) float64 {
return basic.GetDeltaTFn()
}
func SetDeltaT(deltaT func(float64, bool) float64) {
basic.SetDeltaTFn(deltaT)
}
func DefaultDeltaT() func(float64, bool) float64 {
return basic.DefaultDeltaTv2
}
-4
View File
@@ -5,10 +5,6 @@ import (
"testing" "testing"
) )
func Test_LoBo(t *testing.T) {
fmt.Printf("%.9f", dt_cal(2020.5))
}
func Test_LoBoRaDec(t *testing.T) { func Test_LoBoRaDec(t *testing.T) {
jde := 2451545.0 jde := 2451545.0
lo, bo := RaDecToLoBo(jde, 10, 50) lo, bo := RaDecToLoBo(jde, 10, 50)
+16 -14
View File
@@ -1435,19 +1435,20 @@ func GetMoonRiseTime(julianDay, longitude, latitude, timeZone, zenithShift, heig
timeZone = longitude / 15 timeZone = longitude / 15
var moonAngle, timeToMeridian float64 = 0, 0 var moonAngle, timeToMeridian float64 = 0, 0
julianDayZero := math.Floor(julianDay) + 0.5 julianDayZero := math.Floor(julianDay) + 0.5
julianDay = math.Floor(julianDay) + 0.5 - originalTimeZone/24 + timeZone/24 // 求0时JDE //julianDay = math.Floor(julianDay) + 0.5 - originalTimeZone/24 + timeZone/24 // 求0时JDE
//fix:这里时间分界线应当以传入的时区为准,不应当使用当地时区,否则在0时的判断会出错
julianDay = math.Floor(julianDay) + 0.5
estimatedTime := julianDay estimatedTime := julianDay
moonHeight := MoonHeight(julianDay, longitude, latitude, timeZone) // 求此时月亮高度 moonHeight := MoonHeight(julianDay, longitude, latitude, originalTimeZone) // 求此时月亮高度
if zenithShift != 0 { if zenithShift != 0 {
moonAngle = -0.83333 // 修正大气折射 moonAngle = -0.83333 // 修正大气折射
} }
moonAngle = moonAngle - HeightDegreeByLat(height, latitude) moonAngle = moonAngle - HeightDegreeByLat(height, latitude)
moonAngleTime := MoonTimeAngle(julianDay, longitude, latitude, timeZone) moonAngleTime := MoonTimeAngle(julianDay, longitude, latitude, originalTimeZone)
if moonHeight > 0 { // 月亮在地平线上或在落下与下中天之间 if moonHeight-moonAngle > 0 { // 月亮在地平线上或在落下与下中天之间
if moonAngleTime > 180 { if moonAngleTime > 180 {
timeToMeridian = (180 + 360 - moonAngleTime) / 15 timeToMeridian = (180 + 360 - moonAngleTime) / 15
} else { } else {
@@ -1456,10 +1457,10 @@ func GetMoonRiseTime(julianDay, longitude, latitude, timeZone, zenithShift, heig
estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0)
} }
if moonHeight < 0 && moonAngleTime > 180 { if moonHeight-moonAngle < 0 && moonAngleTime > 180 {
timeToMeridian = (180 - moonAngleTime) / 15 timeToMeridian = (180 - moonAngleTime) / 15
estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0)
} else if moonHeight < 0 && moonAngleTime < 180 { } else if moonHeight-moonAngle < 0 && moonAngleTime < 180 {
timeToMeridian = (180 - moonAngleTime) / 15 timeToMeridian = (180 - moonAngleTime) / 15
estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24 + (timeToMeridian/24*12.0)/15.0/24.0)
} }
@@ -1519,28 +1520,29 @@ func GetMoonSetTime(julianDay, longitude, latitude, timeZone, zenithShift, heigh
timeZone = longitude / 15 timeZone = longitude / 15
var moonAngle, timeToMeridian float64 = 0, 0 var moonAngle, timeToMeridian float64 = 0, 0
julianDayZero := math.Floor(julianDay) + 0.5 julianDayZero := math.Floor(julianDay) + 0.5
julianDay = math.Floor(julianDay) + 0.5 - originalTimeZone/24 + timeZone/24 // 求0时JDE //julianDay = math.Floor(julianDay) + 0.5 - originalTimeZone/24 + timeZone/24 // 求0时JDE
//fix:这里时间分界线应当以传入的时区为准,不应当使用当地时区,否则在0时的判断会出错
julianDay = math.Floor(julianDay) + 0.5
estimatedTime := julianDay estimatedTime := julianDay
moonHeight := MoonHeight(julianDay, longitude, latitude, timeZone) // 求此时月亮高度 moonHeight := MoonHeight(julianDay, longitude, latitude, originalTimeZone) // 求此时月亮高度
if zenithShift != 0 { if zenithShift != 0 {
moonAngle = -0.83333 // 修正大气折射 moonAngle = -0.83333 // 修正大气折射
} }
moonAngle = moonAngle - HeightDegreeByLat(height, latitude) moonAngle = moonAngle - HeightDegreeByLat(height, latitude)
moonAngleTime := MoonTimeAngle(julianDay, longitude, latitude, timeZone) moonAngleTime := MoonTimeAngle(julianDay, longitude, latitude, originalTimeZone)
if moonHeight < 0 { if moonHeight-moonAngle < 0 {
timeToMeridian = (360 - moonAngleTime) / 15 timeToMeridian = (360 - moonAngleTime) / 15
estimatedTime += (timeToMeridian/24 + (timeToMeridian/24.0*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24 + (timeToMeridian/24.0*12.0)/15.0/24.0)
} }
// 月亮在地平线上或在落下与下中天之间 // 月亮在地平线上或在落下与下中天之间
if moonHeight > 0 && moonAngleTime < 180 { if moonHeight-moonAngle > 0 && moonAngleTime < 180 {
timeToMeridian = (-moonAngleTime) / 15 timeToMeridian = (-moonAngleTime) / 15
estimatedTime += (timeToMeridian/24.0 + (timeToMeridian/24.0*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24.0 + (timeToMeridian/24.0*12.0)/15.0/24.0)
} else if moonHeight > 0 { } else if moonHeight-moonAngle > 0 {
timeToMeridian = (360 - moonAngleTime) / 15 timeToMeridian = (360 - moonAngleTime) / 15
estimatedTime += (timeToMeridian/24.0 + (timeToMeridian/24.0*12.0)/15.0/24.0) estimatedTime += (timeToMeridian/24.0 + (timeToMeridian/24.0*12.0)/15.0/24.0)
} }
+22 -19
View File
@@ -1,11 +1,12 @@
package basic package basic
import ( import (
"b612.me/astro/tools"
"fmt" "fmt"
"math" "math"
"testing" "testing"
"time" "time"
"b612.me/astro/tools"
) )
func Benchmark_MoonRiseBench(b *testing.B) { func Benchmark_MoonRiseBench(b *testing.B) {
@@ -492,11 +493,11 @@ var moonRiseSetTestData = []MoonRiseSetTestCase{
{2024, 2, 29.0, 31.2357, 30.0444, 2.0, 1, 100, 2460370.429845, 2460369.865380}, {2024, 2, 29.0, 31.2357, 30.0444, 2.0, 1, 100, 2460370.429845, 2460369.865380},
{2024, 2, 29.0, 31.2357, 30.0444, 2.0, 1, 1000, 2460370.428616, 2460369.866552}, {2024, 2, 29.0, 31.2357, 30.0444, 2.0, 1, 1000, 2460370.428616, 2460369.866552},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 0, 2460861.065509, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 0, 2460861.065509, -3.000000},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 100, 2460861.064944, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 100, 2460861.064944, 2460860.500441},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 1000, 2460861.063725, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 0, 1000, 2460861.063725, 2460860.501606},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 0, 2460861.062582, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 0, 2460861.062582, 2460860.502699},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 100, 2460861.062019, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 100, 2460861.062019, 2460860.503237},
{2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 1000, 2460861.060803, -3.000000}, {2025, 7, 4.0, 31.2357, 30.0444, 2.0, 1, 1000, 2460861.060803, 2460860.504400},
{2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 0, -3.000000, 2459960.019905}, {2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 0, -3.000000, 2459960.019905},
{2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 100, -3.000000, 2459960.020416}, {2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 100, -3.000000, 2459960.020416},
{2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 1000, -3.000000, 2459960.021522}, {2023, 1, 15.0, -43.1729, -22.9068, -3.0, 0, 1000, -3.000000, 2459960.021522},
@@ -619,10 +620,10 @@ var moonRiseSetTestData = []MoonRiseSetTestCase{
{2024, 2, 29.0, -149.9003, 61.2181, -9.0, 1, 1000, 2460369.506308, 2460369.862264}, {2024, 2, 29.0, -149.9003, 61.2181, -9.0, 1, 1000, 2460369.506308, 2460369.862264},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 0, 2460861.205484, 2460861.493716}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 0, 2460861.205484, 2460861.493716},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 100, 2460861.204170, 2460861.495011}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 100, 2460861.204170, 2460861.495011},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 1000, 2460861.201358, 2460861.497780}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 0, 1000, 2460861.201358, 2460860.500309},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 0, 2460861.198757, -3.000000}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 0, 2460861.198757, 2460860.502500},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 100, 2460861.197484, -3.000000}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 100, 2460861.197484, 2460860.503576},
{2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 1000, 2460861.194755, -3.000000}, {2025, 7, 4.0, -149.9003, 61.2181, -9.0, 1, 1000, 2460861.194755, 2460860.505890},
{2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 0, 2459959.583014, 2459959.895953}, {2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 0, 2459959.583014, 2459959.895953},
{2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 100, 2459959.581157, 2459959.897741}, {2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 100, 2459959.581157, 2459959.897741},
{2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 1000, 2459959.577188, 2459959.901560}, {2023, 1, 15.0, -42.6043, 71.7069, -3.0, 0, 1000, 2459959.577188, 2459959.901560},
@@ -656,8 +657,8 @@ var moonRiseSetTestData = []MoonRiseSetTestCase{
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 0, 2460369.510257, 2460369.739050}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 0, 2460369.510257, 2460369.739050},
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 100, 2460369.507908, 2460369.741347}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 100, 2460369.507908, 2460369.741347},
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 1000, 2460369.502952, 2460369.746190}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 0, 1000, 2460369.502952, 2460369.746190},
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 0, -3.000000, 2460369.750583}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 0, -2.000000, 2460369.750583},
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 100, -3.000000, 2460369.752708}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 100, -2.000000, 2460369.752708},
{2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 1000, -3.000000, 2460369.757206}, {2024, 2, 29.0, -42.6043, 71.7069, -3.0, 1, 1000, -3.000000, 2460369.757206},
{2025, 7, 4.0, -42.6043, 71.7069, -3.0, 0, 0, 2460861.253176, 2460861.327087}, {2025, 7, 4.0, -42.6043, 71.7069, -3.0, 0, 0, 2460861.253176, 2460861.327087},
{2025, 7, 4.0, -42.6043, 71.7069, -3.0, 0, 100, 2460861.246829, 2460861.333396}, {2025, 7, 4.0, -42.6043, 71.7069, -3.0, 0, 100, 2460861.246829, 2460861.333396},
@@ -712,25 +713,26 @@ var moonRiseSetTestData = []MoonRiseSetTestCase{
// TestMoonRiseSetRegression 月出月落回归测试 // TestMoonRiseSetRegression 月出月落回归测试
func TestMoonRiseSetRegression(t *testing.T) { func TestMoonRiseSetRegression(t *testing.T) {
beforeDeltaT := defDeltaTFn beforeDeltaT := defDeltaTFn
SetDeltaTFn(DefaultDeltaT) SetDeltaTFn(DefaultDeltaTv2)
defer SetDeltaTFn(beforeDeltaT) defer SetDeltaTFn(beforeDeltaT)
const tolerance = 0.000001 // 容差设为1微秒,对于天文计算来说已经足够精确 const tolerance = 0.00011574074
for i, testCase := range moonRiseSetTestData { for i, testCase := range moonRiseSetTestData {
julianDay := JDECalc(testCase.Year, testCase.Month, testCase.Day) julianDay := JDECalc(testCase.Year, testCase.Month, testCase.Day)
// 测试月出时间 // 测试月出时间
actualRise := GetMoonRiseTime(julianDay, testCase.Longitude, testCase.Latitude, actualRise := GetMoonRiseTime(julianDay, testCase.Longitude, testCase.Latitude,
testCase.TimeZone, testCase.ZenithShift, testCase.Height) testCase.TimeZone, testCase.ZenithShift, testCase.Height)
if !floatEquals(actualRise, testCase.ExpectedRise, tolerance) { if !floatEquals(actualRise, testCase.ExpectedRise, tolerance) {
t.Errorf("测试用例 %d 月出时间不匹配:\n"+ t.Errorf("测试用例 %d 月出时间不匹配:\n"+
" 日期: %d-%d-%.1f, 经纬度: (%.4f, %.4f), 时区: %.1f, 天顶修正: %.0f, 海拔: %.0f\n"+ " 日期: %d-%d-%.1f, 经纬度: (%.4f, %.4f), 时区: %.1f, 天顶修正: %.0f, 海拔: %.0f\n"+
" 期望月出: %.6f, 实际月出: %.6f, 差值: %.9f", " 期望月出: %v, 实际月出: %.6f, 差值: %.9f",
i, testCase.Year, testCase.Month, testCase.Day, i, testCase.Year, testCase.Month, testCase.Day,
testCase.Longitude, testCase.Latitude, testCase.TimeZone, testCase.Longitude, testCase.Latitude, testCase.TimeZone,
testCase.ZenithShift, testCase.Height, testCase.ZenithShift, testCase.Height,
testCase.ExpectedRise, actualRise, math.Abs(actualRise-testCase.ExpectedRise)) JDE2Date(testCase.ExpectedRise), actualRise, math.Abs(actualRise-testCase.ExpectedRise))
} }
// 测试月落时间 // 测试月落时间
@@ -738,13 +740,14 @@ func TestMoonRiseSetRegression(t *testing.T) {
testCase.TimeZone, testCase.ZenithShift, testCase.Height) testCase.TimeZone, testCase.ZenithShift, testCase.Height)
if !floatEquals(actualSet, testCase.ExpectedSet, tolerance) { if !floatEquals(actualSet, testCase.ExpectedSet, tolerance) {
fmt.Println(JDECalc(testCase.Year, testCase.Month, testCase.Day))
t.Errorf("测试用例 %d 月落时间不匹配:\n"+ t.Errorf("测试用例 %d 月落时间不匹配:\n"+
" 日期: %d-%d-%.1f, 经纬度: (%.4f, %.4f), 时区: %.1f, 天顶修正: %.0f, 海拔: %.0f\n"+ " 日期: %d-%d-%.1f, 经纬度: (%.4f, %.4f), 时区: %.1f, 天顶修正: %.0f, 海拔: %.0f\n"+
" 期望月落: %.6f, 实际月落: %.6f, 差值: %.9f", " 期望月落: %v,%.6f, 实际月落: %v,%.6f , 差值: %.9f",
i, testCase.Year, testCase.Month, testCase.Day, i, testCase.Year, testCase.Month, testCase.Day,
testCase.Longitude, testCase.Latitude, testCase.TimeZone, testCase.Longitude, testCase.Latitude, testCase.TimeZone,
testCase.ZenithShift, testCase.Height, testCase.ZenithShift, testCase.Height,
testCase.ExpectedSet, actualSet, math.Abs(actualSet-testCase.ExpectedSet)) JDE2Date(testCase.ExpectedSet), testCase.ExpectedSet, JDE2Date(actualSet), actualSet, math.Abs(actualSet-testCase.ExpectedSet))
} }
} }
@@ -754,7 +757,7 @@ func TestMoonRiseSetRegression(t *testing.T) {
// TestMoonRiseSetSpecialCases 测试特殊情况 // TestMoonRiseSetSpecialCases 测试特殊情况
func TestMoonRiseSetSpecialCases(t *testing.T) { func TestMoonRiseSetSpecialCases(t *testing.T) {
beforeDeltaT := defDeltaTFn beforeDeltaT := defDeltaTFn
SetDeltaTFn(DefaultDeltaT) SetDeltaTFn(DefaultDeltaTv2)
defer SetDeltaTFn(beforeDeltaT) defer SetDeltaTFn(beforeDeltaT)
testCases := []struct { testCases := []struct {
name string name string
+19 -19
View File
@@ -121,7 +121,7 @@ func nianHaoMap() map[string][][]int {
"天历": [][]int{{1328, 1330}}, "天历": [][]int{{1328, 1330}},
"泰定": [][]int{{1324, 1328}}, "泰定": [][]int{{1324, 1328}},
"至治": [][]int{{1321, 1323}}, "至治": [][]int{{1321, 1323}},
"延": [][]int{{1314, 1320}}, "延": [][]int{{1314, 1320}},
"皇庆": [][]int{{1312, 1313}}, "皇庆": [][]int{{1312, 1313}},
"至大": [][]int{{1308, 1311}}, "至大": [][]int{{1308, 1311}},
"大德": [][]int{{1297, 1307}}, "大德": [][]int{{1297, 1307}},
@@ -129,12 +129,12 @@ func nianHaoMap() map[string][][]int {
"至元": [][]int{{1264, 1294}, {1335, 1368}}, "至元": [][]int{{1264, 1294}, {1335, 1368}},
"祥兴": [][]int{{1278, 1264}}, "祥兴": [][]int{{1278, 1264}},
"景炎": [][]int{{1276, 1278}}, "景炎": [][]int{{1276, 1278}},
"德": [][]int{{1275, 1276}}, "德": [][]int{{1275, 1276}},
"咸淳": [][]int{{1265, 1275}}, "咸淳": [][]int{{1265, 1275}},
"景定": [][]int{{1260, 1264}}, "景定": [][]int{{1260, 1264}},
"开庆": [][]int{{1259, 1259}}, "开庆": [][]int{{1259, 1259}},
"宝": [][]int{{1253, 1258}}, "宝": [][]int{{1253, 1258}},
"淳": [][]int{{1241, 1252}}, "淳": [][]int{{1241, 1252}},
"嘉熙": [][]int{{1237, 1240}}, "嘉熙": [][]int{{1237, 1240}},
"端平": [][]int{{1234, 1236}}, "端平": [][]int{{1234, 1236}},
"绍定": [][]int{{1228, 1233}}, "绍定": [][]int{{1228, 1233}},
@@ -158,13 +158,13 @@ func nianHaoMap() map[string][][]int {
"建中靖国": [][]int{{1101, 1101}}, "建中靖国": [][]int{{1101, 1101}},
"元符": [][]int{{1098, 1100}}, "元符": [][]int{{1098, 1100}},
"绍圣": [][]int{{1094, 1098}}, "绍圣": [][]int{{1094, 1098}},
"元": [][]int{{1086, 1094}}, "元": [][]int{{1086, 1094}},
"元丰": [][]int{{1078, 1085}}, "元丰": [][]int{{1078, 1085}},
"熙宁": [][]int{{1068, 1077}}, "熙宁": [][]int{{1068, 1077}},
"治平": [][]int{{1064, 1067}}, "治平": [][]int{{1064, 1067}},
"嘉": [][]int{{1056, 1063}}, "嘉": [][]int{{1056, 1063}},
"至和": [][]int{{1054, 1056}}, "至和": [][]int{{1054, 1056}},
"皇": [][]int{{1049, 1054}}, "皇": [][]int{{1049, 1054}},
"庆历": [][]int{{1041, 1048}}, "庆历": [][]int{{1041, 1048}},
"康定": [][]int{{1040, 1041}}, "康定": [][]int{{1040, 1041}},
"宝元": [][]int{{1038, 1040}}, "宝元": [][]int{{1038, 1040}},
@@ -186,7 +186,7 @@ func nianHaoMap() map[string][][]int {
"建隆": [][]int{{960, 963}}, "建隆": [][]int{{960, 963}},
"显德": [][]int{{954, 960}}, "显德": [][]int{{954, 960}},
"广顺": [][]int{{951, 954}}, "广顺": [][]int{{951, 954}},
"乾": [][]int{{948, 950}}, "乾": [][]int{{948, 950}},
"开运": [][]int{{944, 948}}, "开运": [][]int{{944, 948}},
"天福": [][]int{{936, 944}}, "天福": [][]int{{936, 944}},
"清泰": [][]int{{934, 936}}, "清泰": [][]int{{934, 936}},
@@ -197,7 +197,7 @@ func nianHaoMap() map[string][][]int {
"贞明": [][]int{{915, 921}}, "贞明": [][]int{{915, 921}},
"乾化": [][]int{{911, 915}}, "乾化": [][]int{{911, 915}},
"开平": [][]int{{907, 911}}, "开平": [][]int{{907, 911}},
"天": [][]int{{904, 907}}, "天": [][]int{{904, 907}},
"天复": [][]int{{901, 904}}, "天复": [][]int{{901, 904}},
"光化": [][]int{{898, 901}}, "光化": [][]int{{898, 901}},
"乾宁": [][]int{{894, 898}}, "乾宁": [][]int{{894, 898}},
@@ -1325,7 +1325,7 @@ func tangEras() []Era {
{ {
Year: 904, Year: 904,
Emperor: "唐哀帝", Emperor: "唐哀帝",
OtherNianHaoStart: "天", OtherNianHaoStart: "天",
Dynasty: "唐", Dynasty: "唐",
}, },
{ {
@@ -1822,7 +1822,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1314, Year: 1314,
Emperor: "元仁宗", Emperor: "元仁宗",
Nianhao: "延", Nianhao: "延",
Dynasty: "元", Dynasty: "元",
}, },
{ {
@@ -1871,7 +1871,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1275, Year: 1275,
Emperor: "宋恭帝", Emperor: "宋恭帝",
OtherNianHaoStart: "德", OtherNianHaoStart: "德",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
@@ -1895,13 +1895,13 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1253, Year: 1253,
Emperor: "宋理宗", Emperor: "宋理宗",
Nianhao: "宝", Nianhao: "宝",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
Year: 1241, Year: 1241,
Emperor: "宋理宗", Emperor: "宋理宗",
Nianhao: "淳", Nianhao: "淳",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
@@ -2045,7 +2045,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1086, Year: 1086,
Emperor: "宋哲宗", Emperor: "宋哲宗",
Nianhao: "元", Nianhao: "元",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
@@ -2069,7 +2069,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1056, Year: 1056,
Emperor: "宋仁宗", Emperor: "宋仁宗",
OtherNianHaoStart: "嘉", OtherNianHaoStart: "嘉",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
@@ -2081,7 +2081,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 1049, Year: 1049,
Emperor: "宋仁宗", Emperor: "宋仁宗",
Nianhao: "皇", Nianhao: "皇",
Dynasty: "宋", Dynasty: "宋",
}, },
{ {
@@ -2213,7 +2213,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 948, Year: 948,
Emperor: "后汉隐帝", Emperor: "后汉隐帝",
OtherNianHaoStart: "乾", OtherNianHaoStart: "乾",
Dynasty: "后汉", Dynasty: "后汉",
}, },
{ {
@@ -2279,7 +2279,7 @@ func wudaiSongYuanEras() []Era {
{ {
Year: 904, Year: 904,
Emperor: "唐哀帝", Emperor: "唐哀帝",
Nianhao: "天", Nianhao: "天",
Dynasty: "唐", Dynasty: "唐",
}, },
} }