2017-11-29 9 views
0

음 알 구리라 (Umm AlQura) 달력에 따라 히 즐리 데이트를 그레고리 안 데이트로 변환하려고합니다. 나는 인터넷에서 많은 것을 발견하지 못했습니다 (어쩌면 저의 게으른 태도 때문일 수도 있습니다). 나는 Hijri 날짜를 줄리안 숫자로 변환 한 다음 줄리안 숫자에서 그레고리력으로 변환하려고했습니다.고지리는 골란의 그레고리력 날짜를

그러나 나는 단지 Hijri 날짜를 율리우스 숫자로 변환 할 수 있습니다. 줄리안 번호를 그레고리오로 변환하는 방법을 알 수 없습니다.

아니면 내가 잘못된 접근 방식을 취하고 있습니다. 누구든지 Umm AlQura 달력에 따라 Hijri 날짜를 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) 
} 

많은 의무!

+0

실행하려는 코드를 공유하십시오. – pltvs

+0

수정 된 답변을 확인하십시오! –

답변

0

나는 작은 문제 도우미 라이브러리 hijri을 만들었습니다. 모든 도움에 감사드립니다!

1

Go에는 날짜 형식이 아닌 날짜 형식의 변환기가 있습니다. 난 당신이 JS 패키지에 대한 구현을 구현해야한다고 생각합니다 여기에 JS에 대한 코드를 찾을 수 https://github.com/arabiaweather/hijri-date/blob/master/hijri-date.js

+0

정확히 내가 한 짓! 영감을 얻기 위해 http://xsoh.ws/hijritools/를 사용했지만. 내 대답을 확인하십시오! –

0

Hijri Shamsi (솔라 캘린더)를 사용하는 경우 persical을 사용할 수 있습니다.