golang的Hijiri日期至公历日期

golang的Hijiri日期至公历日期,go,gregorian-calendar,hijri,Go,Gregorian Calendar,Hijri,我正试图根据《阿尔古拉历法》将一个回历日期转换为公历日期。我在网上找不到什么(可能是因为我懒惰的态度)。我试着把回历日期转换成朱利安数字,然后再从朱利安数字转换成公历日期 然而,我只能将Hijri日期转换为朱利安数字。我不知道如何从朱利安数转换成格雷戈里数 或者我采取了错误的方法。有人能帮我把乌姆阿尔古拉日历上的一个回历日期转换成戈朗的公历日期吗 这就是我到目前为止所做的: func getJulianNumber(y, m, d int) float64 { if m == 1 ||

我正试图根据《阿尔古拉历法》将一个回历日期转换为公历日期。我在网上找不到什么(可能是因为我懒惰的态度)。我试着把回历日期转换成朱利安数字,然后再从朱利安数字转换成公历日期

然而,我只能将Hijri日期转换为朱利安数字。我不知道如何从朱利安数转换成格雷戈里数

或者我采取了错误的方法。有人能帮我把乌姆阿尔古拉日历上的一个回历日期转换成戈朗的公历日期吗

这就是我到目前为止所做的:

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)
}
func getJulianNumber(y,m,d int)float64{
如果m==1 | | m==2{
y-=1
m+=12
}
a:=y/100
b:=a/4
c:=2-a+b
e:=int(365.25*(浮点数64(y)+4716))
f:=int(30.6001*(64(m)+1))
返回浮点64(浮点64(c)+浮点64(d)+浮点64(e)+浮点64(f)-1524.5)
}
func julianToH(jd-64){
q:=jd+0.5
z:=int(q)
w:=int((浮动64(z)-1867216.25)/36524.25)
x:=w/4
a:=int(float64(z)+1+float64(w)-float64(x))
b:=a+1524
c:=int((浮动64(b)-122.1)/365.25)
d:=int(365.25*64(c))
e:=int((浮动64(b)-浮动64(d))/30.6001)
f:=int(30.6001*64(e))
日期:=int(float64(b)-float64(d)-float64(f)+(q-float64(z)))
月,年整数
e1:=e-1

如果e1Go有日期格式的转换器,而不是日期类型的转换器。我想你必须实现一个Go包,你可以在这里找到JS的代码。我创建了一个小助手库来解决我的问题。谢谢所有的帮助!

如果你是指Hijri Shamsi(阳历)您可以使用。

请共享您试图运行的代码。请检查编辑后的答案!与我所做的完全一致!尽管用于灵感。请检查我的答案!