gpt4 book ai didi

go - 回历日期到 golang 中的公历日期

转载 作者:数据小太阳 更新时间:2023-10-29 03:12:31 26 4
gpt4 key购买 nike

我正在尝试根据 Umm AlQura 日历将回历日期转换为公历日期。我在 Internet 上找不到太多(可能是我懒惰的态度)。我尝试将 Hijri 日期转换为 Julian 数字,然后从 Julian 数字转换为 Gregorian 日期。

但是,我只能将 Hijri 日期转换为 Julian 数字。我不知道如何将儒略数转换为公历。

也许我采用了错误的方法。任何人都可以帮助根据 Umm AlQura 日历将回历日期转换为 golang 中的公历日期吗?

这就是我目前的情况:

func getJulianNumber(y, m, d int) float64 {
if m == 1 || m == 2 {
y -= 1
m += 12
}
a := y / 100
b := a / 4
c := 2 - a + b
e := int(365.25 * (float64(y) + 4716))
f := int(30.6001 * (float64(m) + 1))
return float64(float64(c) + float64(d) + float64(e) + float64(f) - 1524.5)
}

func julianToH(jd float64) {
q := jd + 0.5
z := int(q)
w := int((float64(z) - 1867216.25) / 36524.25)
x := w / 4
a := int(float64(z) + 1 + float64(w) - float64(x))
b := a + 1524
c := int((float64(b) - 122.1) / 365.25)
d := int(365.25 * float64(c))
e := int((float64(b) - float64(d)) / 30.6001)
f := int(30.6001 * float64(e))

day := int(float64(b) - float64(d) - float64(f) + (q - float64(z)))
var month, year int
e1 := e - 1
if e1 <= 12 {
month = e1
} else {
month = e - 3
}
if month == 1 || month == 2 {
year = int(c - 4715)
} else {
year = int(c - 4716)
}
fmt.Println(day, month, year)
}

非常感谢!

最佳答案

Go 有日期格式转换器,没有日期类型。我认为你必须实现一个 go 包,你可以在这里找到 JS 的代码 https://github.com/arabiaweather/hijri-date/blob/master/hijri-date.js

关于go - 回历日期到 golang 中的公历日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47553025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com