Skip to Content
Menu
This question has been flagged
3 Replies
5041 Views

i want my date field in hijri format can you plz help me. How to convert english to hijri?

Avatar
Discard
Best Answer

Convert English date to Hijri date

Code to convert English date to Hijri date:

def intPart(floatNum):
      if floatNum < -0.0000001: return math.ceil(floatNum - 0.0000001)
      return math.floor(floatNum + 0.0000001)

def Hijri2Gregorian(yr,mth,day):
    jd1 = (11 * int(yr) + 3) / 30.0
    jd2 = (int(mth) - 1) / 2.0
    jd = jd1 + 354 * int(yr) + 30 * int(mth) - jd2 + int(day) + 1948440 - 385

    if jd > 2299160:
       l = jd + 68569
       n = intPart((4 * l) / 146097.0)
       l = l - intPart((146097 * n + 3) / 4.0)
       i = intPart((4000 * (l + 1)) / 1461001.0)
       l = l - intPart((1461 * i) / 4.0) + 31
       j = intPart((80 * l) / 2447.0)
       d = l - intPart((2447 * j) / 80.0)
       l = intPart(j / 11.0)
       m = j + 2 - 12 * l
       y = 100 * (n - 49) + i + l
    else:
       j = jd + 1402
       k = intPart((j - 1) / 1461.0)
       l = j - 1461 * k
       n = intPart((l - 1) / 365.0) - intPart(l / 1461.0)
       i = l - 365 * n + 30
       j = intPart((80 * i) / 2447.0)
       d = i - intPart((2447 * j) / 80.0)
       i = intPart(j / 11.0)
       m = j + 2 - 12 * i
       y = 4 * k + n + i - 4716
       
    if(m<10): 
       m = str("0") + str(int(m))
    else: 
       m = str(int(m))

    if(d<10): 
       d = str("0") + str(int(d))
    else: 
       d = str(int(d))

    english_date = m + str("/") + d + str("/") +str(int(y))    
    return english_date

 

class hr_employee(osv.osv):
    _inherit = "hr.employee"

'islamic_date_passport' : fields.char('Islamic Date(Passport Expiry)'),
'passport_expire':fields.char('Passport Expiry',readonly=True),

def get_hijri_passport(self, cr, uid, ids, islamic_date_passport, context=None):
        res = {}    
        datetype = islamic_date_passport
        list = datetype.split('-')
        day = str(list[0])
        mth = str(list[1])
        yr = str(list[2])  
        eng = Hijri2Gregorian(yr,mth,day)   
        return {'value':{'passport_expire':eng}}

hr_employee()

Avatar
Discard

Remya , is it ok working this code ?.....

Best Answer

We've https://www.odoo.com/apps/modules/11.0/web_hijri_date/ now, in v9 v10 too.

Avatar
Discard
Related Posts Replies Views Activity
3
Jun 25
824
1
Jan 25
17753
1
Jan 20
3750
1
Dec 19
6147
1
Dec 19
17067