2017-11-29 6 views
0

私はヒンズー日付をグレゴリオ日付にUmm AlQuraカレンダーに基づいて変換しようとしています。私はインターネット上で多分見つけることができませんでした(おそらく私の怠惰な態度に起因する)。私はHijriの日付をユリウスンの数字に変換してから、ジュリアンの数字からグレゴリオの日付に変換しようとしました。ゴジョール日グリジョア日付の日付

しかし、私はちょうどHijriの日付をユリアンの数字に変換できました。私はジュリアン数をグレゴリオ暦に変換する方法を理解できません。

または、私は間違ったアプローチを取っています。誰もがgolangのグレゴリオ暦の日付にUmm AlQuraのカレンダーに基づいて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) 
} 

は多くの義務を負います!

+0

実行しようとしているコードを共有してください。 – pltvs

+0

編集した回答を確認してください! –

答えて

0

私は小さなヘルパーライブラリhijri私の問題を解決するために作成しました。すべての助けをありがとう!

1

Goには、日付形式ではなく日付形式のコンバータがあります。私はあなたが行くパッケージを実装する必要があると思う、ここにJSのコードを見つけることができますhttps://github.com/arabiaweather/hijri-date/blob/master/hijri-date.js

+0

まさに私がやったこと!インスピレーションのためにhttp://xsoh.ws/hijritools/を使用しましたが。私の答えをチェック! –

0

ヒジリシャシ(ソーラーカレンダー)の場合は、persicalを使用できます。

関連する問題