Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odgovori
5164 Prikazi

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

Avatar
Opusti
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
Opusti

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
Opusti
Related Posts Odgovori Prikazi Aktivnost
3
jun. 25
1074
1
jan. 25
17966
1
jan. 20
3946
1
dec. 19
6383
1
dec. 19
17267